Notification Twitter (oAuth) dans Nagios
Date: 23/11/2010 | Catégories: Nagios,Open-source,Planet-libre,Web | Tags: icinga,nagios,oauth,twitter
Twitter est un service devenu indispensable pour la veille technologique des geeks que nous sommes. Son "ouverture via des API permet également de l'utiliser comme un moyen simple de diffusion d'informations de type alerte.
Nous allons dans ce billet voir comment configurer Nagios (l'outil de supervision open-source) pour envoyer des alertes sur un compte Twitter dédié. La méthode détaillé est compatible avec la nouvelle méthode d'authentification de Twitter nommée oAuth.
Avant de commencer
Pour ne pas poluer votre time-line pricipale, je vous conseille de créer un compte Twitter dédié à ce besoin. C'est sur ce dernier que les alertes seront envoyées. Il suffira ensuite aux "administateurs" de suivre ce compte Twitter pour être informé au plus vite des anomalies survenues sur le réseau.
Pour créer notre compte Twitter special Nagios, on va à l'adresse suivante:
Il faut bien retenir votre "username" (nagiosnicolargo dans mon cas) et "password".
Il faut ensuite se rendre dans les "Settings" et cliquer sur le bouton "Protect my updates" pour forcer l'approbation des utilisateurs qui vont pouvoir suivre ce compte Twitter. Quand un des administrateurs fera une demande pour suivre ce compte Twitter, il faudra l'approuver. Cela évite que n'importe qui voit que votre réseau est tombé :)...
Installation du script de mise à jour de Twitter
Depuis que l'authentification sur Twitter, la procédure est un peu plus compliquée. J'ai donc écrit un billet spécifique sur le sujet. Il suffit de suivre cette procédure en prenant comme compte Twitter le compte préalablement créé dans le chapitre précédant pour y associer une nouvelle application (le script Python nommé tweetitcli.py) qui va permettre à Nagios de mettre à jour la timeline.
Après cette étape, vous devez donc être capable de mettre à jour la timeline de votre compte Twitter dédié avec une ligne de commande du type:
./tweetitcli.py 'Petit test depuis la ligne de commande Linux'
Je vous laisse vérifier que cela marche...
Il faut ensuite copier le script en question dans le répertoire des plugins de Nagios:
cp ./tweetitcli.py /usr/local/nagios/libexec/
sudo chown nagios:nagios /usr/local/nagios/libexec/tweetitcli.py
Configuration du serveur Nagios
Passons maintenant aux fichiers de configuration de Nagios. Je pars sur le principe que vous avez un serveur Nagios en état de marche. On commence par ajouter la commande tweetitcli.py qui va permettre d'envoyer un message à notre compte Twitter via Curl:
# vi /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name notify-host-by-twitter
command_line $USER1$/tweetitcli.py "$HOSTNAME$ is $HOSTSTATE$"
}
define command{
command_name notify-service-by-twitter
command_line $USER1$/tweetitcli.py "$SERVICEDESC$@$HOSTNAME$ is $SERVICESTATE$ ** $SERVICEOUTPUT$"
}
Ensuite on défini le contact (ou le groupe à vous de voir):
# vi /usr/local/nagios/etc/objects/templates.cfg
define contact{
name nicolargoadmin
alias Admin Nicolargo
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands notify-service-by-twitter
host_notification_commands notify-host-by-twitter
}
Puis enfin on associe le contact avec le service à surveiller (par exemple que mon serveur Web tourne bien...):
define host{
use linux-host
host_name gandiserveur
alias Serveur Gandi
address blog.nicolargo.com
parents monrouteur
hostgroups prj-perso
contacts nicolargoadmin
}
define service{
use generic-service
host_name gandiserveur
service_description HTTP
check_command check_http
contacts nicolargoadmin
}
On teste...
Il ne reste plus qu'a tester vos fichiers de configuration:
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
et à relancer Nagios:
sudo service nagios restart
A chaque notification, un nouveau message devrait apparaître dans votre compte Twitter dédié 😉