Nagios Event Handlers
Souvent méconnue, cette API intégrée à nagios est pourtant très utile. Je l’ai conseillée sur différents blogs, en commentaire, et je me suis dis pourquoi ne pas partager mon expérience via ce billet. Son fonctionnement est assez simple, l’event handler de Nagios se déclenche lorsqu’un service change d’état. Quand le statut passe de OK à warning, de Ok à critique ou de OK à Unknown. Je m’en sers pour déclencher des alertes vocales via une API proprio, sur certains services sensibles quand ces derniers deviennent critiques pour Nagios. Voilà comment je procède.
Un bloc du fichier service.cfg :
define service { use Service-Com host_name ServeurWindowsCom service_description Services Communication Bancaire display_name Services Communication Bancaire check_command check_nt!PROCSTATE!-l xxx_service.ex,xxxoni.exe,XxxxServ.exe,xxMon.exe event_handler SENDALERTE contact_groups INFO EXPLOIT }
Voici le bloc qui définie la commande SENDALERTE dans le fichier commands.cfg :
define command { command_name SENDALERTE command_line /usr/bin/SENDALERTE $HOSTNAME$ $SERVICESTATE$ ASTEINTE *APPEL_IMMEDIAT 80 '$SERVICEDESC$' }
Et enfin le shell SENDALERTE appelé :
#!/bin/sh # On ne prend des décisions que lorsqu'on est sûr (on ne veut pas être appelé à 1h00 du matin pour rien), # donc on déclenche seulement en état critique case "$2" in WARNING) exit 0 ;; OK) exit 0 ;; UNKNOWN) exit 0 ;; CRITICAL) /usr/bin/API_vocale_proprio "$1 : Le $6 est critique." -shost ASTREINTE -a $3 -c $4 -s $5 ;; *) exit 0 ;; esac exit 0
De la même manière, on pourrait automatiser pour une alerte précise, une action précise, comme redémarrer un daemon, lancer une sauvegarde, faire chauffer le café… On pourrait également se baser sur le tutorial de nicolargo pour lancer un sms via un service Web prévu à cet effet… En espérant que cela puisse servir.
Pour aller plus loin avec Nagios :
ou l’excellent :