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