Jabber est un système de messagerie instantanée libre, standard et ouvert, qui va nous permettre d'être averti des alertes du logiciel de supervision Nagios.

nagios-jabber.png

Nous utiliserons pour cela le paquet sendxmpp qui, couplé au logiciel de monitoring Nagios, permettra de recevoir les notifications en temps réel sur une messagerie instantanée Jabber (dont Gmail fait parti, quoique discutable). Après quelques galères sur plusieurs solutions disponibles ici et , voici une solution parmi d'autres mais qui a le mérite de fonctionner sur ma ubuntu-server LTS.

sendxmpp est un script Perl disponible dans le dépot universe qui permet de manière très simple d'envoyer des messages Jabber en ligne de commande.

Vous devez juste disposer d'une adresse Jabber (disponible gratuitement sur jabber.apinc.org) pour le logiciel Nagios et qui servira à envoyer les messages sur votre adresse.

Installer et configurer sendxmmp
sudo aptitude install sendxmpp
Il faut ensuite créer un fichier /etc/nagios/sendxmpprc et l'éditer pour y indiquer les paramètres de votre compte jabber ; exemple de contenu du fichier :
useraccount@jabber.org password
Il vous faudra changer les permissions de ce fichier pour que sendxmpp puisse l'utiliser.
sudo chmod 0600 sendxmpprc
sudo chgrp www-data sendxmpprc
sudo chown nagios sendxmpprc

Paramétrage de Nagios

Editer le fichier misccommands.cfg (situé dans /etc/nagios/ chez moi) et ajouter les 2 notifications suivantes :
# 'notify-by-jabber' personnal command definition
define command{
command_name notify-by-jabber
command_line /usr/bin/printf "%b" "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" | /usr/bin/sendxmpp $CONTACTEMAIL$ -f /etc/nagios/sendxmpprc
}

# 'host-notify-by-jabber' personnal command definition
define command{
command_name host-notify-by-jabber
command_line /usr/bin/printf "%b" "Host $HOSTSTATE$ alert for $HOSTNAME$!" | /usr/bin/sendxmpp $CONTACTEMAIL$ -f /etc/nagios/sendxmpprc
}
Ensuite, créer un nouveau contact dans le fichier contacts.cfg en précisant le mail jabber auquel seront envoyées les notifications :
define contact{
contact_name maurinof-jabber
alias maurinof
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-jabber
host_notification_commands host-notify-by-jabber
email useraccount-dest@jabber.fr
}
Il ne vous reste plus qu'à associer le contact à un groupe de contacts puis le contactgroup à un service ou un hôte et le tour est joué !

sendxmpp-nagios.png

nota : si votre serveur Jabber ne supporte pas SASL (erreur 'undefined value as a HASH reference'), la solution est sur ce site.