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éphiractions.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.
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.