zephir.monitor.agents.bilan

Package zephir :: Package monitor :: Package agents :: Module bilan |
[frames] | no frames]

# Source Code for Module zephir.monitor.agents.bilan

     1  # -*- coding: UTF-8 -*-
     2  ###########################################################################
     3  # Eole NG - 2007
     4  # Copyright Pole de Competence Eole  (Ministere Education - Academie Dijon)
     5  # Licence CeCill  cf /root/LicenceEole.txt
     6  # eole@ac-dijon.fr
     7  ###########################################################################
     8
     9  """
    10  Agent zephir pour la génération des bilans mensuels
    11  """
    12
    13  from zephir.monitor.agentmanager.agent import Agent
    14  from zephir.monitor.agentmanager.data import TableData
    15  from zephir.monitor.agentmanager.util import status_to_img
    16  from zephir.monitor.agentmanager import status
    17
    18 -class Bilan(Agent):
    19
    20
    21 -    def __init__(self, name, **params):
    22          Agent.__init__(self, name, **params)
    23          self.glob_status = status.OK()
    24          self.table = TableData([
    25              ('description', "Description", {'align':'left'}, None),
    26              ('stats', "Historique", {'align':'left'}, None),
    27              ])
    28          self.data = [self.table]
    29
    30
    31 -    def measure(self):
    32          mesures = []
    33          try:
    34              # recherche de l'identifiant zephir
    35              # (nécessaire pour l'url du graphe de status des 'sous agents')
    36              from zephir.zephir_conf.zephir_conf import id_serveur
    37          except:
    38              # si on est pas enregistré : 0
    39              id_serveur = 0
    40
    41          # agents à ne pas prendre en compte
    42          hidden = ['diag']
    43          hidden.extend(self.manager.agents['tcpservices'].tcp_services)
    44          self.glob_status = status.OK()
    45          for agent in self.manager.agents.keys():
    46              serv_agent = self.manager.agents[agent]
    47              if serv_agent.name != 'bilan' and serv_agent.name not in hidden and not serv_agent.name.endswith('Debsums'):
    48                  if serv_agent.check_status() == status.Error():
    49                      self.glob_status = status.Warn()
    50                  if serv_agent.last_measure is not None:
    51                      mesures.append({ 'description': '<a href=/agents/%s/%s/>%s</a>' % (id_serveur, agent, serv_agent.description),
    52                                       'stats': '<img src=/agents/%s/%s/status_long.png alt="Historique (%s)"/>' % (id_serveur,agent,agent)})
    53                  else:
    54                      mesures.append({ 'description': agent,
    55                                       'stats': ''})
    56          return {'agents': mesures}
    57
    58
    59 -    def write_data(self):
    60          Agent.write_data(self)
    61          if self.last_measure is not None:
    62              self.table.table_data = self.last_measure.value['agents']
    63
    64 -    def check_status(self):
    65          """remonte une erreur si un des services est tombé"""
    66          # pas d'alerte sur cet agent
    67          return self.glob_status
    68