Auteur:
NicoLargo

Date:
24/11/2008

Catégories:
Open-source
Web

Tags:


Notifications Twitter pour Nagios

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

Il n’existe pas de limite pour améliorer Nagios, l’outil de supervision open-source. Au niveau des notifications (messages envoyés sur des alertes), il est possible d’utiliser les mails, les SMS, les messageries instantanées… (je vous conseille la lecture du très bon livre “Nagios au coeur de la supervision opensource” sur le sujet).

Nous allons dans ce billet apporter une pincée de Web 2.0 dans cet édifice en proposant une notification via Twitter.

Les avantages de cette solution:

  • facilité de consultation des notifcations à partir du Web et/ou de n’importe quel client Twitter
  • facilité du partage des notifications entre administrateurs (il suffit de s’abonner au Twitter en question)
  • les messages Twitter sont bien adapté aux notifications Nagios (messages courts, possibilité de lien hypertexte vers le serveur Nagios….)

Les inconveniants:

  • disponibilité du service Twitter (c’est pas son fort…)
  • confidentialité (bien que l’on puisse rendre son Twitter privé)

Avant de commencer…

Il faut bien sûr avoir un compte Twitter dédié pour ce besoin. Vous pouvez le créer en vous rendant sur cette page.

A ce stade et avant de continuer, assurez-vous que vous avez bien noté votre login et password Twitter.

Configuration de Nagios

On doit éditer le fichier de commandes (/usr/local/nagios/etc/objects/commands.cfg) et y ajouter la section suivante:

define command {
command_name twit-it
command_line /usr/bin/curl –connect-timeout 30 –max-time 60 -u YOUR_TWITTER_BOT_USER:YOUR_TWITTER_BOT_PASSWORD -d status=”$SERVICEDESC$@$HOSTNAME$ is $SERVICESTATE$ ** $SERVICEOUTPUT$ ** Date: $SHORTDATETIME$” http://twitter.com/statuses/update.xml
}

PS: notez bien qu’il y a deux – avant

Ensuite, il faut modifier un des champs suivants dans la section contact du fichier /usr/local/nagios/etc/objects/templates.cfg:

service_notification_commands twit-it

ou

host_notification_commands alarma-twitter

On teste le tout

Il ne reste plus qu’a tester vos fichiers de configuration:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

et à relancer Nagios:

service nagios restart

ou

/etc/init.d/nagios restart

A chaque notification, un nouveau message devrait apparaître dans votre Twitter ;)

7 commentaires


  1. winsa, le 24/11/2008 (#5390)

    Ça peut en effet être utile. Merci pour l’astuce ! ;-)


  2. Philippe, le 5/12/2008 (#5432)

    Nagios est un superbe outils. Je l’ai mis en place avec la surcouche centreon pour essayer de simplifier un peu les choses. Il faut malgré tout que la panne ne concerne pas l’accès internet, sinon pas d’alerte tout comme l’excellent tuto sur les SMS. C’est un peu extrémiste les liaisons pro internet sont rarement en panne il est vrai et il suffit d’avoir une liaison de secours…


  3. Crupuk, le 19/05/2009 (#6402)

    Merci pour cette excellente idée !! Mise en application immédiatement.

    Par contre, une petite correction :

    service_notification_commands alarma-twitter

    Et le service défini s’apelle : twit-it..

    Merci encore


  4. NicoLargo, le 20/05/2009 (#6406)

    @Crupuk: je corrige de ce pas… thx


  5. naikss, le 12/06/2009 (#6536)

    Merci pour l’astuce !

    Ça m’a donner l’idée de faire de même avec GLPI.

    Pour ce que ca intéresse voici le code :
    $username = “xx”;
    $password = “yy”;
    $message=”hello”;
    $url = “http://twitter.com/statuses/update.xml”;
    $curl_handle = curl_init();
    curl_setopt($curl_handle, CURLOPT_URL, “$url”);
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl_handle, CURLOPT_POST, 1);
    curl_setopt($curl_handle, CURLOPT_POSTFIELDS, “status=$message”);
    curl_setopt($curl_handle, CURLOPT_USERPWD, “$username:$password”);
    $buffer = curl_exec($curl_handle);
    curl_close($curl_handle);

    A placer dans le fichier tracking.class.php, juste en dessous de : // Processing Email
    Pour ce qui est des infos remontées je mouline carrément, pour l’instant je récupère uniquement le demandeur avec la variable $author=$this->getAuthorName();

    Voilà :)


  6. sandy, le 6/05/2010 (#8152)

    Bonjour,
    Je viens d’essayer cette astuce pour Nagios et j’ai l’erreur suivante : curl: (6) couldnn’t resolve host ‘twitter.com’ , quelqu’un aurait-il la solution à ce problème, sachant que le DNS fonctionne correctement.

    Merci par avance pour votre aide


  7. NicoLargo, le 6/05/2010 (#8153)

    @sandy: et en remplacant par http://www.twitter.com ?

    La nouvelle version de ce billet est ici: http://blog.nicolargo.com/2009/05/nagios-et-la-notification-twitter.html


Laisser un message

Les informations saisies resteront privées.