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...






Open-source

Abonnez-vous
12 commentaires au billet “Nagios et la notification Twitter”
Ça c'est la classe !!!
Avec Nicolargo, découvrez la supervision en 2.0
C'est un bon slogan non ?
Très bon article en tous cas
Une bonne idée que voilà !
Merci pour l'astuce !
merci
tuto nickel chrome comme d'habitude!!
Excellent cette astuce un tout grand merci !!
Bonjour et merci pour ce tuto !
J'ai toutefois un petit souci car cela ne fonctionne pas ! La commande curl fonctionne bien depuis un terminal mais je n'ai aucune notification en passant par la notification automatique twitter. Je vois pourtant dans le nagios.log que la notificaiton part bien !
Vous avez une idée de l'endroit ou je pourrais chercher pour savoir quel est le blocage ?
Merki
@divided: peut être un problème de PATH pour trouver curl.
Il faut vérifier ou se trouve curl sur ton système:
# whereis curl
curl: /usr/bin/curl
et vérifier que le path configuré dans la command_line est le bon.
Il faut également vérifier au niveau des droits que l'utilisateur nagios a bien les droits d'execution sur curl.
Merci pour ta réponse rapide.
J'avais vérifié que le chemin vers "curl" était le bon !
J'ai plutôt penché pour un problème de droit mais dans ce cas là, comment diagnostiquer cela, voir comment le modifier ?
HELP !
Je n'arrive toujours pas à faire fonctionner cette notification par Twitter.
Ce qui est étrange, c'est que la même commande dans un terminal va fonctionner très bien et envoyer le message sur mon twit.
C'est donc très clairement un problème de droit mais je dois appliquer quel droit à quoi ?
Si vous avez une idée ... merci.
Superbes tutos...
J'ai utilisé cela via 2 notifications twit_up et twit_down afin de donner un message convivial pour les 2 états sur mon twitter. J'ai alors créé un user pour chacune des notifications (l'une en c et l'autre en r)
le test en ligne de commande fonctionne dans les 2 cas mais nagios n'envoit à twitter que la commande quand passant en critical. L'autre utilisée que pour le recovery n'est jamais utilisée. pourquoi une notification liée juste à un recovery n'est pas effectuée?
en fait je pense que la seule solution serait d'avoir differents messages selon le SERVICESTATE mais je ne vois pas comment mettre cela en oeuvre facilement au niveau de la notification. qq peut-ik m'aider?
très bon tuto et idée originale.
pour info, si jamais derrière un proxy , "man curl" ajouter option -x/ip_du_proxy:port
Nico tu peu m'aider comment je peux configurer nagios pour que je puisse envoier des notifications par email
Publier un commentaire
Utiliser
pour lier des documents à vos commentaires.
Pour des discutions techniques, merci d'utiliser le forum.