Actions automatiques des agents de surveillance

Nous avons ajouté la possibilité pour les agents de surveillance d'effectuer des actions en cas de changement d'état.

Il est possible de définir des actions pour tous les états en définissant des fonctions du type:

  • action_unknown -> état de l'agent inconnu ;
  • action_ok -> pas d'erreur ;
  • action_warn -> avertissement détecté ;
  • action_error -> erreur détectée ;
  • action_dependant -> état non significatif du à un autre agent en erreur (exemple : état de l'agent de surveillance des imprimantes si l'agent cups est en erreur).

Ces actions seront exécutées chaque fois que l'agent en question passera à l'état correspondant.

Activer / désactiver des actions

Par défaut, les actions définies ne sont pas exécutées. Lorsqu'un agent change d'état il va faire les tests suivants pour savoir si il doit exécuter une action :

  • une fonction doit être définie pour le nouvel état ;
  • l'action doit être configurée comme active dans un fichier du répertoire /usr/share/zephir/monitor/actions/

3 fichier différents sont utilisés par ordre de priorité croissante :

  • actions_eole.cfg : actions activées par défaut à l'installation (à ne pas modifier) ;

  • actions_acad.cfg : actions activées(/désactivées) au niveau académique (par exemple). L'idéal est de le gérer dans une variante de Zéphir

  • actions.cfg  : idem au niveau de l'établissement (spécifique au serveur).

Par défaut, seul le fichier actions_eole.cfg est présent, et il active les actions de relance des services suivants :

  • dns ;

  • sshd ;

  • e2guardian.

Les fichiers actions_acad.cfg et actions.cfg doivent être créés, ils sont de type .ini et la syntaxe est la suivante :

[nom de l'agent]

nom de l'action=True (False pour désactiver)

Les actions non définies sont considérées comme inactives

ExempleExemple pour l'activation d'actions sur le passage en erreur et le retour à la normale pour SSH et PostgreSQL

[ssh]

action_error=True

action_ok=True

[postgresql]

action_error=True

action_ok=True

Ajout de nouvelles actions

Les actions sont définies dans un fichier <nom_agent>.actions.

Ces fichiers sont à placer dans le répertoire : /usr/share/zephir/monitor/actions/

Certaines actions sont proposées par défaut dans le sous-répertoire eole et peuvent servir d'exemple.

Ces fichiers doivent contenir des fonctions python dont le nom correspond à action_<état> (cf. paragraphes précédents). Si la fonction retourne un message, celui-ci sera journalisé sur le serveur Zéphir (journaux de type SURVEILLANCE), ou dans les journaux systèmes du serveur si il n'est pas enregistré sur le module Zéphir.

Les fonctions reçoivent automatiquement 3 arguments :

  • une référence à l'objet agent (permet de récupérer son nom, sa description, ...) ;
  • l'état précédent ;
  • le nouvel état.

On peut imaginer les actions suivantes pour l'agent vir (détection des virus, présent sur les modules Scribe et Horus) :

  • passage en avertissement (action_warn) : envoi d'un courrier électronique à l'administrateur réseau ;
  • passage en erreur : blocage du poste client en cause ;
  • retour à la normale : déblocage du poste si en erreur précédemment, rien si avertissement.
Action de relance du service ssh, fichier /usr/share/zephir/monitor/actions/eole/ssh.actions (livré avec zephir-client)
Action de relance du service ssh, fichier /usr/share/zephir/monitor/actions/eole/ssh.actions (livré avec zephir-client)

Complément

Si vous utilisez des bibliothèques python non disponibles par défaut, importez-les à l'intérieur des fonctions et non en début de fichier.

Ces bibliothèques sont accessibles par défaut dans les fonctions :

  • librairie standard

    gettext, locale, os (sys est disponible à travers os.sys), pwd, random, shutil

  • librairies eole

    cfg : zephir.monitor.agentmanager.config

  • librairies twisted

    utils : twisted.internet.utils

    static : twisted.web.static

    log : twisted.python.log (permet de journaliser dans le log des agents via log.msg())

    service : twisted.application.service

    internet : twisted.application.internet

    xmlrpc : twisted.web.xmlrpc

    util : twisted.web.util

    resource : twisted.web.resource

    server : twisted.web.server

Remarque

Si une action non existante est configurée comme active au niveau d'un agent, l'agent journalisera le changement d'état dans le fichier /var/log/zephir/agent.log ou dans le fichier /var/log/rsyslog/local/zephir_backend/zephir_backend.info.log sur le serveur Zéphir).

Les actions ne sont exécutées qu'au changement d'état. Par exemple si un agent passe en erreur, l'action ne sera pas lancée à chaque mesure.

Pour l'instant seules quelques actions sont proposées par défaut, n'hésitez pas à nous proposer vos contributions en envoyant un courrier électronique à l'équipe Eole (eole@ac-dijon.fr).

Les actions présentes dans /usr/share/zephir/monitor/actions sont prioritaires sur les fonctions fournies par défaut (dans le sous répertoire eole). Cela permet de redéfinir les actions proposées si elles ne conviennent pas.

Attention

Ne modifiez pas les fichiers présents dans eole, car ils seront écrasés en cas de mise à jour.