{"id":546,"date":"2009-12-03T11:57:48","date_gmt":"2009-12-03T10:57:48","guid":{"rendered":"http:\/\/blog.guiguiabloc.fr\/?p=546"},"modified":"2010-05-29T20:13:40","modified_gmt":"2010-05-29T19:13:40","slug":"remontee-dalerte-par-sms-avec-les-api-sfr","status":"publish","type":"post","link":"http:\/\/blog.guiguiabloc.fr\/index.php\/2009\/12\/03\/remontee-dalerte-par-sms-avec-les-api-sfr\/","title":{"rendered":"Remont\u00e9e d&rsquo;alerte par SMS avec les API SFR"},"content":{"rendered":"<p>Comme tout bon sysadmin qui se respecte, vous surveillez scrupuleusement vos serveurs, vos \u00e9quipements ou que sais-je encore via des outils de monitoring divers et vari\u00e9s.<\/p>\n<p>Votre infrastructure ch\u00e9rie est tellement scrut\u00e9e que cela rendrais jalouse n&rsquo;importe quelle jeune maman devant surveiller son bambin.<\/p>\n<p>D&rsquo;ailleurs, je me suis toujours demander pourquoi on ne passait pas les b\u00e9b\u00e9s sous Nagios&#8230;<\/p>\n<p>Cela donnerait des r\u00e9sultats int\u00e9ressants :<\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2009\/12\/check_couche_warning.png\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-548\" title=\"check_couche_warning\" src=\"http:\/\/1.cdn.guiguiabloc.fr\/wp-content\/2009\/12\/check_couche_warning-300x14.png\" alt=\"\" width=\"300\" height=\"14\" \/><\/a><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2009\/12\/check_couche_critical.png\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-549\" title=\"check_couche_critical\" src=\"http:\/\/1.cdn.guiguiabloc.fr\/wp-content\/2009\/12\/check_couche_critical-300x15.png\" alt=\"\" width=\"300\" height=\"15\" \/><\/a><\/p>\n<p>AH AH AH\u00a0 \ud83d\ude00\u00a0 \ud83d\ude00<\/p>\n<p>Bref&#8230;<\/p>\n<p>Les remont\u00e9es d&rsquo;alertes \u00ab\u00a0critique\u00a0\u00bb doivent pouvoir avertir en temps r\u00e9el le sysadmin et comme vous le savez, c&rsquo;est toujours quand on est loin de son \u00e9cran que la panne intervient.<\/p>\n<p>L&rsquo;id\u00e9al \u00e9tant de pouvoir ajouter aux diverses m\u00e9thodes d&rsquo;alertes (mails, alarme Nagios, etc&#8230;) l&rsquo;envoi d&rsquo;un SMS sur votre portable.<\/p>\n<p>Si votre op\u00e9rateur t\u00e9l\u00e9phonique est SFR, vous avez la premi\u00e8re solution de vous cr\u00e9er une adresse mail en @sfr.fr.<\/p>\n<p>En activant sur www.sfr.fr, rubrique Messagerie, l&rsquo;alerte SMS, vous recevez un texto a chaque mail re\u00e7u sur cette BAL.<\/p>\n<p>Il vous suffit donc de donner un Sujet de mail li\u00e9 a l&rsquo;alerte pour voir s&rsquo;afficher succinctement sur votre t\u00e9l\u00e9phone l&rsquo;alerte en question.<\/p>\n<p>Le concept est int\u00e9ressant, malheureusement, le SMS arrive assez al\u00e9atoirement, entre une dizaine de minutes \u00e0&#8230; plusieurs heures.<\/p>\n<p>Forc\u00e9ment, c\u00f4t\u00e9 remont\u00e9e d&rsquo;alerte en temps r\u00e9el, on fait mieux&#8230;<\/p>\n<p>La deuxi\u00e8me solution est beaucoup plus fun et plus efficace.<\/p>\n<p>Je vous propose tout simplement d&rsquo;utiliser les API de SFR et de contacter directement leur Webservice en SOAP, comme on peut le faire avec OVH.<\/p>\n<p>Classe, non ?<\/p>\n<p>Car chose que vous ne savez peut-\u00eatre pas, mais les op\u00e9rateurs t\u00e9l\u00e9phoniques proposent discr\u00e8tement des kits des d\u00e9veloppement (SDK) permettant de communiquer avec leur infrastructure via la plupart du temps un webservice accessible depuis le nain ternet.<\/p>\n<p>C&rsquo;est le cas chez Orange\u00a0 sur <a title=\"API Orange\" href=\"http:\/\/www.orangepartner.com\/site\/frfr\/home\/p_home.jsp\" target=\"_blank\">http:\/\/www.orangepartner.com\/site\/frfr\/home\/p_home.jsp<\/a> et \u00e9galement chez SFR.<\/p>\n<p>Client SFR, c&rsquo;est donc chez eux que je vais utiliser\u00a0 les API.<\/p>\n<p>L&rsquo;atelier de d\u00e9veloppement SFR, appel\u00e9 RED, est accessible sur <a title=\"RED SFR\" href=\"http:\/\/red.sfr.fr\/dev-zone\/index.php\" target=\"_blank\">http:\/\/red.sfr.fr\/dev-zone\/index.php.<\/a><\/p>\n<p>L&rsquo;inscription est gratuite et vous donne acc\u00e8s aux t\u00e9l\u00e9chargements des SDK (Php, JAVA et PUB (Market Place SFR).<\/p>\n<p>Egalement avec la mise a disposition des SDK, vous disposez d&rsquo;un \u00ab\u00a0compte\u00a0\u00bb li\u00e9 a une application\u00a0 (le red101) qui vous cr\u00e9dite d&rsquo;un nombre de points vous permettant de tester le service et vos d\u00e9veloppements (100 SMS pour le mois par exemple)<\/p>\n<p>Les API disponibles sont nombreuses et franchement int\u00e9ressantes (envoi et r\u00e9ception de SMS, de MMS, g\u00e9olocalisation de portable, gestion d&rsquo;\u00e9venement, utilisation de carnet d&rsquo;adresses unifi\u00e9, etc&#8230;)<\/p>\n<p>D&rsquo;ailleurs, certaines applications d\u00e9velopp\u00e9es par la communaut\u00e9 m\u00e9rite le coup d&rsquo;oeil \ud83d\ude09<\/p>\n<p>Sachez \u00e9galement que vous avez la possiblit\u00e9 d&rsquo;acheter des packs de jetons. Exemple pour une vingtaine d&rsquo;euros vous avec 350 utilisations de l&rsquo;API SMS ou 267 utilisations de l&rsquo;API Loc.<\/p>\n<p>Le solde offert est largement suffisant pour couvrir ce que nous voulons faire, une remont\u00e9e d&rsquo;alerte critique par SMS sur notre portable.<\/p>\n<p>N&rsquo;\u00e9tant pas d\u00e9veloppeur, j&rsquo;ai donc choisi forc\u00e9ment le kit PHP, langage qui s&rsquo;adaptera parfaitement \u00e0 mon niveau \ud83d\ude42<\/p>\n<p>Les pr\u00e9requis sur votre serveur sont le module soap et les librairies openssl<\/p>\n<p>Sous Debian :<\/p>\n<pre lang=\"text\">apt-get install php-soap openssl libssl0.9.8<\/pre>\n<p>Tout d&rsquo;abord, t\u00e9l\u00e9chargement du SFR-Red_PHP_SDK_v1.1.<\/p>\n<p>Avec le SDK, vous recevrez \u00e9galement par mail vos certificats SSL a utiliser avec l&rsquo;API.<\/p>\n<p>Premi\u00e8re chose a faire, changer le mot de passe par d\u00e9faut du certificat (fourni dans le mail) :<\/p>\n<pre lang=\"text\">openssl rsa -des3 -in guiguiabloc.pem -out guiguiabloc.pem\r\nEnter pass phrase for Guiguiabloc.pem:\r\nwriting RSA key\r\nEnter PEM pass phrase:\r\nVerifying - Enter PEM pass phrase:<\/pre>\n<p>L&rsquo;arborescence se pr\u00e9sente ainsi (j&rsquo;ai copi\u00e9 mes certificats dans le r\u00e9pertoire pour des raisons de facilit\u00e9) :<\/p>\n<pre lang=\"text\">docs\/ \u00a0\u00a0\u00a0\u00a0 config.php\u00a0\u00a0\u00a0 examples\/\u00a0 wsdl\/\u00a0\u00a0\u00a0\u00a0 Guiguiabloc.crt\u00a0 Guiguiabloc.p12\u00a0 lib\/\r\nconfig.php\u00a0\u00a0 Guiguiabloc.jks\u00a0 Guiguiabloc.pem<\/pre>\n<p>On renseigne le fichier config.php<\/p>\n<pre lang=\"text\">\r\n<\/pre>\n<p>Et c&rsquo;est tout \ud83d\ude00<\/p>\n<p>A vous maintenant d&rsquo;\u00e9crire le script PHP utilisant la m\u00e9thode SendSMS par exemple :<\/p>\n<pre lang=\"text\">alerte-sms_bascule-IpFO.php\r\nsendSMS(new\r\nUserIdentifier(\"0612345678\",\"PhoneNumber\"),\"ALERTE Bascule IPFailOver\");\r\n?&gt;<\/pre>\n<p>On appelle le script : php alerte-sms_bascule-IpFO.php<\/p>\n<p>et hop; magique, un SMS du\u00a0 6011 \ud83d\ude00 \ud83d\ude00<\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2009\/12\/sms-apisfr.jpg\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-552\" title=\"sms-apisfr\" src=\"http:\/\/1.cdn.guiguiabloc.fr\/wp-content\/2009\/12\/sms-apisfr-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" \/><\/a><\/p>\n<p>Si vous utilisez heartbeat pour vos bascules d&rsquo;IP FailOver (suite \u00e0 la lecture de <a title=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/10\/17\/cluster-haute-disponibilite-chez-ovh-avec-ipfailover-heartbeat-et-drbd-via-ipsec\/\" href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/10\/17\/cluster-haute-disponibilite-chez-ovh-avec-ipfailover-heartbeat-et-drbd-via-ipsec\/\" target=\"_blank\">cet excellent billet<\/a> ), il vous suffit de rajouter l&rsquo;appel a ce script dans  \/etc\/ha.d\/ressource.d\/IPaddrFO.<\/p>\n<pre lang=\"text\">case $2 in\r\n  start)        \/etc\/ha.d\/ns11111-failoverupdate.py\r\n                php \/opt\/sfr\/alerte-sms_bascule-IpFO.php\r\n                ip_start $1;;\r\n  stop)         ip_stop $1;;\r\n  status)       ip_status $1;;\r\n  monitor)      ip_monitor $1;;\r\n  *)            usage\r\n                exit 1\r\n                ;;\r\nesac<\/pre>\n<p>C\u00f4t\u00e9 Nagios, je suppose que vous g\u00e9rez d\u00e9j\u00e0 les niveaux d&rsquo;escalades (lire cet excellent Wifi : <a title=\"http:\/\/wiki.nagios-fr.org\/nagios\/objects-reference\" href=\"http:\/\/wiki.nagios-fr.org\/nagios\/objects-reference\" target=\"_blank\">http:\/\/wiki.nagios-fr.org\/nagios\/objects-reference<\/a> )<\/p>\n<p>Nagios envoi un mail \u00e0 la BAL d&rsquo;escalade et vous executer le script a r\u00e9ception de mail :<\/p>\n<p>dans \/etc\/aliases<\/p>\n<pre>nagiossms: \"|php \/opt\/sfr\/alerte-nagios.php\"<\/pre>\n<p>(par exemple hein, je vous laisse \u00e0 votre imagination d\u00e9bordante \ud83d\ude00 )<\/p>\n<p>Voil\u00e0 donc une solution simple pour remonter vos alertes en temps r\u00e9els, que ce soit vos \u00e9tats critiques Nagios, vos bascules d&rsquo;IP failover ou la coupure EDF sur votre Onduleur \ud83d\ude42<\/p>\n<p>Amusez-vous bien \ud83d\ude00<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comme tout bon sysadmin qui se respecte, vous surveillez scrupuleusement vos serveurs, vos \u00e9quipements ou que sais-je encore via des outils de monitoring divers et vari\u00e9s. Votre infrastructure ch\u00e9rie est tellement scrut\u00e9e que cela rendrais jalouse n&rsquo;importe quelle jeune maman &hellip; <a href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2009\/12\/03\/remontee-dalerte-par-sms-avec-les-api-sfr\/\">Read More <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[27,13,7],"tags":[132,107,130,64],"_links":{"self":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/546"}],"collection":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/comments?post=546"}],"version-history":[{"count":13,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/546\/revisions"}],"predecessor-version":[{"id":700,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/546\/revisions\/700"}],"wp:attachment":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/media?parent=546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/categories?post=546"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/tags?post=546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}