Tag: api
Remontée d’alerte par SMS avec les API SFR
par guiguiabloc le 03 déc, 2009, sous architecture, geekerie, linux
Comme tout bon sysadmin qui se respecte, vous surveillez scrupuleusement vos serveurs, vos équipements ou que sais-je encore via des outils de monitoring divers et variés.
Votre infrastructure chérie est tellement scrutée que cela rendrais jalouse n’importe quelle jeune maman devant surveiller son bambin.
D’ailleurs, je me suis toujours demander pourquoi on ne passait pas les bébés sous Nagios…
Cela donnerait des résultats intéressants :
AH AH AH
Bref…
Les remontées d’alertes « critique » doivent pouvoir avertir en temps réel le sysadmin et comme vous le savez, c’est toujours quand on est loin de son écran que la panne intervient.
L’idéal étant de pouvoir ajouter aux diverses méthodes d’alertes (mails, alarme Nagios, etc…) l’envoi d’un SMS sur votre portable.
Si votre opérateur téléphonique est SFR, vous avez la première solution de vous créer une adresse mail en @sfr.fr.
En activant sur www.sfr.fr, rubrique Messagerie, l’alerte SMS, vous recevez un texto a chaque mail reçu sur cette BAL.
Il vous suffit donc de donner un Sujet de mail lié a l’alerte pour voir s’afficher succinctement sur votre téléphone l’alerte en question.
Le concept est intéressant, malheureusement, le SMS arrive assez aléatoirement, entre une dizaine de minutes à… plusieurs heures.
Forcément, côté remontée d’alerte en temps réel, on fait mieux…
La deuxième solution est beaucoup plus fun et plus efficace.
Je vous propose tout simplement d’utiliser les API de SFR et de contacter directement leur Webservice en SOAP, comme on peut le faire avec OVH.
Classe, non ?
Car chose que vous ne savez peut-être pas, mais les opérateurs téléphoniques proposent discrètement des kits des développement (SDK) permettant de communiquer avec leur infrastructure via la plupart du temps un webservice accessible depuis le nain ternet.
C’est le cas chez Orange sur http://www.orangepartner.com/site/frfr/home/p_home.jsp et également chez SFR.
Client SFR, c’est donc chez eux que je vais utiliser les API.
L’atelier de développement SFR, appelé RED, est accessible sur http://red.sfr.fr/dev-zone/index.php.
L’inscription est gratuite et vous donne accès aux téléchargements des SDK (Php, JAVA et PUB (Market Place SFR).
Egalement avec la mise a disposition des SDK, vous disposez d’un « compte » lié a une application (le red101) qui vous crédite d’un nombre de points vous permettant de tester le service et vos développements (100 SMS pour le mois par exemple)
Les API disponibles sont nombreuses et franchement intéressantes (envoi et réception de SMS, de MMS, géolocalisation de portable, gestion d’évenement, utilisation de carnet d’adresses unifié, etc…)
D’ailleurs, certaines applications développées par la communauté mérite le coup d’oeil
Sachez également que vous avez la possiblité d’acheter des packs de jetons. Exemple pour une vingtaine d’euros vous avec 350 utilisations de l’API SMS ou 267 utilisations de l’API Loc.
Le solde offert est largement suffisant pour couvrir ce que nous voulons faire, une remontée d’alerte critique par SMS sur notre portable.
N’étant pas développeur, j’ai donc choisi forcément le kit PHP, langage qui s’adaptera parfaitement à mon niveau
Les prérequis sur votre serveur sont le module soap et les librairies openssl
Sous Debian :
apt-get install php-soap openssl libssl0.9.8
Tout d’abord, téléchargement du SFR-Red_PHP_SDK_v1.1.
Avec le SDK, vous recevrez également par mail vos certificats SSL a utiliser avec l’API.
Première chose a faire, changer le mot de passe par défaut du certificat (fourni dans le mail) :
openssl rsa -des3 -in guiguiabloc.pem -out guiguiabloc.pem Enter pass phrase for Guiguiabloc.pem: writing RSA key Enter PEM pass phrase: Verifying - Enter PEM pass phrase:
L’arborescence se présente ainsi (j’ai copié mes certificats dans le répertoire pour des raisons de facilité) :
docs/ config.php examples/ wsdl/ Guiguiabloc.crt Guiguiabloc.p12 lib/ config.php Guiguiabloc.jks Guiguiabloc.pem
On renseigne le fichier config.php
Et c’est tout
A vous maintenant d’écrire le script PHP utilisant la méthode SendSMS par exemple :
alerte-sms_bascule-IpFO.php
sendSMS(new
UserIdentifier("0612345678","PhoneNumber"),"ALERTE Bascule IPFailOver");
?>On appelle le script : php alerte-sms_bascule-IpFO.php
et hop; magique, un SMS du 6011
Si vous utilisez heartbeat pour vos bascules d’IP FailOver (suite à la lecture de cet excellent billet ), il vous suffit de rajouter l’appel a ce script dans /etc/ha.d/ressource.d/IPaddrFO.
case $2 in
start) /etc/ha.d/ns11111-failoverupdate.py
php /opt/sfr/alerte-sms_bascule-IpFO.php
ip_start $1;;
stop) ip_stop $1;;
status) ip_status $1;;
monitor) ip_monitor $1;;
*) usage
exit 1
;;
esacCôté Nagios, je suppose que vous gérez déjà les niveaux d’escalades (lire cet excellent Wifi : http://wiki.nagios-fr.org/nagios/objects-reference )
Nagios envoi un mail à la BAL d’escalade et vous executer le script a réception de mail :
dans /etc/aliases
nagiossms: "|php /opt/sfr/alerte-nagios.php"
(par exemple hein, je vous laisse à votre imagination débordante
)
Voilà donc une solution simple pour remonter vos alertes en temps réels, que ce soit vos états critiques Nagios, vos bascules d’IP failover ou la coupure EDF sur votre Onduleur
Amusez-vous bien
