Nagios et la notification Twitter

Date: 18/05/2009 | Catégories: Nagios,Open-source | Tags:

---

Mise à jour:
Une nouvelle version de ce billet est disponible ici

---

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
}


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é 😉

Partager ce billet