Nagios et la notification Twitter
Twitter est un formidable outil de veille pour les geeks que nous sommes. Nous allons dans ce billet voir comment configurer Nagios (l'outil de supervision open-source) pour envoyer des alertes sur un compte Twitter. Il annule et remplace l'ancien billet que j'avais écris sur le sujet.
Avant de commencer
Je vous conseille fortement de créer un compte Twitter dédié à ce besoin. C'est sur ce dernier que les alertes seront envoyé. Il suffira ensuite aux administateurs de suivre (follow) 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:
Configuration du serveur Nagios
Maintenant que le compte Twitter est opérationnel, il faut configurer le serveur Nagios pour qu'il puisse y envoyer ces alertes. Pour envoyer les messages sur le compte Twitter nous allons utiliser la commande Curl avec la syntaxe suivante:
curl --connect-timeout 30 --max-time 60 -u nagiosnicolargo:monpw -d status="Petit test depuis de Twist depuis Curl" http://twitter.com/statuses/update.xml
Si Curl n'est pas présent sur votre système, il faut l'installer (exemple pour un système Ubuntu):
sudo apt-get install curl
Passons maintenant aux fichiers de configuration de Nagios. Je pars sur le principe que vous avez un serveur Nagios en état de marche (en clair que vous avez suivi à la lettre les tutos PART 1 - Installation de Linux et des pré-requis système et PART 2 - Installation et configuration de Nagios 3). On commence par ajouter la commande twitit 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 /usr/bin/curl --connect-timeout 30 --max-time 60 -u nagiosnicolargo:monpw -d status="$HOSTNAME$ is $HOSTSTATE$" http://twitter.com/statuses/update.xml
}
define command{
command_name notify-service-by-twitter
command_line /usr/bin/curl --connect-timeout 30 --max-time 60 -u nagiosnicolargo:monpw -d status="$SERVICEDESC$@$HOSTNAME$ is $SERVICESTATE$ ** $SERVICEOUTPUT$" http://twitter.com/statuses/update.xml
}
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 iwebwebserveur
alias Serveur WEB iWeb
address blog.nicolargo.com
parents monrouteur
hostgroups prj-perso
contacts nicolargoadmin
}
define service{
use generic-service
host_name iwebwebserveur
service_description HTTP
check_command check_http
contacts nicolargoadmin
}
Et voili...