Envoyer des SMS depuis Nagios en utilisant l'API SMS d'Orange

Mise à jour 21 avril 2010 : Les Instant API deviennent les API d’Orange et déménagent vers un nouveau site. J’ai modifié l’article en conséquence. Heureusement, les APIs n’ont pas changé d’adresse, donc le code source reste inchangé.

Ce tutoriel explique comment configurer Nagios pour utiliser l’API d’envoi de SMS d’Orange. En pré-requis, je suppose que Nagios est déjà installé et que vous connaissez le fonctionnement des fichiers de configuration de Nagios (je ne détaille pas les chemins vers les fichiers de configuration car ils dépendent de votre distribution et de votre personnalisation).

Etape 1 : création d’un compte Orange Partner et récupération de votre “API key”

Tout est expliqué sur le site des API d’Orange à cette adresse. Notez bien votre “API key” qu’il faudra renseigner dans le script Python fourni à l’étape 2.

Etape 2 : installation du script d’envoi de SMS

La documentation Orange inclut un exemple d’envoi de SMS en PHP. Francois Marx a écrit un article très complet sur Developpez.com, avec des exemples en PHP, Python, Java et VBscript. Je me suis inspiré des quelques lignes en Python pour écrire un script d’envoi de SMS baptisé simplement sms.py.

Téléchargez sms.py sur votre serveur Nagios. Personnalisez le script avec votre API key (ligne 16), puis rendez le exécutable (chmod +x).

A ce stade, testez le script depuis la ligne de commande en tapant :

echo "Hello world" | ./sms.py 33610203040

Cela va envoyer “Hello World” au mobile n° 33610203040 (33 est l’indicatif pour la France, 610203040 est le numéro de mobile sans le 0 initial). Une réponse “200” signifie que le SMS a bien été envoyé. Pour la signification des autres codes d’erreurs, consultez la documentation de l’API Orange sur leur site.

Etape 3 : vérification du numéro de téléphone associé au contact recevant les notifications

Vérifiez que vos définitions de contacts dans Nagios contiennent bien un champ pager avec un numéro de téléphone au format international (sans le signe “+”, sans espace ni tiret). Rajoutez les commandes de notification notify-service-by-sms et notify-host-by-sms comme dans l’exemple ci-dessous.

contact_name                    hleroy
alias                           Root
service_notification_period     24x7
host_notification_period        24x7
service_notification_options    w,u,c,r
host_notification_options       d,r
service_notification_commands   notify-service-by-email,notify-service-by-sms
host_notification_commands      notify-host-by-email,notify-host-by-sms
email                           email@domain.com
pager                           33610203040
}

Etape 4 : ajout des commandes d’envoi de SMS

Editez votre configuration Nagios pour rajouter les commandes suivantes (pensez à personnaliser le chemin d’installation de sms.py) :

# 'notify-service-by-sms' command definition
define command{
       command_name    notify-service-by-sms
       command_line    /usr/bin/printf "%b" "$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" | /home/hleroy/scripts/misc/sms.py $CONTACTPAGER$
}

# 'notify-host-by-sms' command definition
define command{
        command_name    notify-host-by-sms
        command_line /usr/bin/printf "%b" "Host $HOSTSTATE$ alert for $HOSTNAME$" | /home/hleroy/scripts/misc/sms.py $CONTACTPAGER$
}

Etape 5 :testez !

Rechargez la configuration de Nagios (sudo /etc/init.d/nagios3 reload). Arrêtez un des services que vous supervisez avec Nagios et surveillez votre téléphone portable. Si vous recevez l’email de notification, mais pas le SMS, vérifiez les étapes 3 et 4.

Attention : lors de la création du compte Orange Partner, vous avez 200 crédits d’offerts (ce qui correspond à l’envoi de 20 SMS). Pensez à alimenter votre compte régulièrement si vos services tombent en panne 😉

Bonne supervision !

Commentaires

Commentaire par Alex Alexandrino

Bonjour Hervé,

avez-vous déjà testé AlarmTILT pour Nagios? Au-delà d’un envoi de SMS, vous pouvez mettre en place des méthodes d’appels en cascade jusqu’à acquittement d’appel, en mélangeant les médias (email, sms, vocal text-to-speech).

AlarmTILT fonctionne en mode SaaS et CaaS (Software and Connectivity as a Service). La bi-directionnalité du système permet d’inclure des collègues dans les procédures d’alertes, lorsque l’un d’entre eux acquitte un appel ou SMS, les autres sont automatiquement informés.

Pas de script, juste un agent Java à télécharger. Cet agent transmet les événements Nagios (les downs et les ups) via connexion IP sécurisée et encryptée. L' agent est lui-même supervisé à distance via méthode « signe de vie », vous serez alerté selon vos procédures en cas de non-réceptuion du signe de vie.

C’est gratuit (à part les communications), merci de tester et de me revenir avec votre retour d’expérience.

Alex
M-PLIFY, créateur AlarmTILT

Commentaire par Fournet

Bonjour et merci pour ton boulot,

J’ai essayé de suivre la procédure, seulement j’ai une erreur lors du test à la ligne 13 il ne connait pas le module etree.ElementTree

J’ai vérifié j’ai bien le dernier package ElementTree-1.2.6-5

Je suis sur Centos et helas un peu début en linux.

Merci pour ton aide.

Cordialement
Mathieu

Commentaire par Hervé

@Fournet: si l’erreur apparait dès la ligne 13 (c’est à dire l’import du module, c’est que Python n’arrive pas à le trouver). Vérifie si le module est bien installé et s’il est accessible depuis le PYTHONPATH.

Licensed under CC BY-NC-SA 4.0
Dernière mise à jour le Sep 04, 2022 20:46 +0200
Généré avec Hugo
Thème Stack conçu par Jimmy