zephir.monitor.agent.mem

Package zephir :: Package monitor :: Package agent :: Module mem |
[frames] | no frames]

# Source Code for Module zephir.monitor.agent.mem

     1  # -*- coding: UTF-8 -*-
     2  """Etat de la mémoire
     3  """
     4
     5  import os, time
     6  from zephir.monitor.utils import list2list_to_table
     7  from agent import Agent
     8
     9 -class MemAgent(Agent):
    10      """Bilan de l'etat de la memoire
    11      """
    12 -    def __init__(self,exec_cmd="/bin/cat /proc/meminfo"):
    13          self.exec_cmd = exec_cmd
    14          self.name = "mem"
    15          self.description="""Bilan de la mémoire"""
    16          Agent.__init__(self)
    17
    18          # traitements particuliers
    19          brut = self._mem()
    20          self.contenu_xml  = list2list_to_table(brut)
    21          self.contenu_html = self.contenu_xml #list2list_to_table(self.brut)
    22
    23          # écriture dans les fichiers
    24          self.write_html()
    25          self.write_xml()
    26
    27
    28 -    def _cat(self):
    29          sortie = os.popen(self.exec_cmd)
    30          resultat = sortie.read()
    31          sortie.close()
    32          return resultat.split("\n")
    33
    34 -    def _mega(self,val):
    35          """ transfo de la valeur passée (string en octets) en Mo
    36          """
    37          return (int(val)/1024/1024)
    38
    39 -    def _pourcent(self,use,tot):
    40          """ calcul du pourcentage de mémoire utilisée
    41          """
    42          return (str(int(use)*100/int(tot))+"%")
    43
    44 -    def _mem(self):
    45          """ effectue les traitements et revoie le résultat dans une liste de listes
    46          """
    47          l = self._cat()
    48          liste = [['type', 'utilisation', 'libre (mo)','utilisé (mo)','taille (mo)']]
    49          physique=l[1].split()
    50          liste.append(['Mémoire Physique', self._pourcent(physique[2],physique[1]),self._mega(physique[3]), self._mega(physique[2]), self._mega(physique[1])])
    51          swap=l[2].split()
    52          liste.append(['Swap disque', self._pourcent(swap[2],swap[1]), self._mega(swap[3]), self._mega(swap[2]), self._mega(swap[1])])
    53          # Alerte si swap disque atteint plus de XX (%)
    54          if int(self._pourcent(swap[2],swap[1])[:-1]) > 90:
    55              self.set_status("0")
    56
    57          return liste
    58
    59
    60  if __name__ == "__main__":
    61      MemAgent()
    62