<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Christophe Nowicki &#187; Nagios</title>
	<atom:link href="http://www.csquad.org/tag/nagios/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.csquad.org</link>
	<description>Just for fun</description>
	<lastBuildDate>Fri, 14 Jan 2011 08:32:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Notifications Nagios par Téléphone</title>
		<link>http://www.csquad.org/2009/12/09/notifications-nagios-par-telephone/</link>
		<comments>http://www.csquad.org/2009/12/09/notifications-nagios-par-telephone/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 19:39:02 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[Text-to-Speech]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=780</guid>
		<description><![CDATA[J&#8217;ai configuré mon instance de Nagios pour recevoir une notification par téléphone en cas d&#8217;incident. (déclenchement d&#8217;une alarme ou d&#8217;un détecteur d&#8217;eau / fumée dans mon installation domotique). 
Ce billet décrit comment mettre en place un système de  la notification par téléphone avec Nagios.
Pré-requis
Vous avez besoin des composants suivants :

Une distribution Debian GNU/Linux ;
Une [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai configuré mon instance de <a href="http://www.nagios.org/">Nagios</a> pour recevoir une notification par téléphone en cas d&#8217;incident. (déclenchement d&#8217;une alarme ou d&#8217;un détecteur d&#8217;eau / fumée dans mon <a href="/installation-domotique/">installation domotique</a>). </p>
<p>Ce billet décrit comment mettre en place un système de  la notification par téléphone avec Nagios.</p>
<h3>Pré-requis</h3>
<p>Vous avez besoin des composants suivants :</p>
<ul>
<li>Une distribution <a href="http://www.debian.org/">Debian GNU/Linux</a> ;</li>
<li>Une installation fonctionnelle de <a href="http://www.nagios.org/">Nagios</a> ; </li>
<li>Une PABX IP avec le support du protocole SIP, comme <a href="http://www.asterisk.org/">Asterisk</a> ;</li>
<li>Un système de Synthèse vocale fonctionnelle, comme <a href="http://espeak.sourceforge.net/">eSpeak</a> + <a href="http://tcts.fpms.ac.be/synthesis/mbrola.html">MBROLA</a> ;</li>
<li>Un client SIP en ligne de commande comme <a href="http://www.pjsip.org/pjsua.htm">PJSUA</a>. </li>
</ul>
<h3>Installation</h3>
<p>Le client SIP en ligne de commande PJSUA n&#8217;est pas disponible dans les paquets du projet Debian.<br />
Il est donc nécessaire de l&#8217;installer manuellement à l&#8217;aide du classique : <em>configure, make, make install</em>.<br />
La procédure est décrite dans ce billet : <a href="http://blog.nicolargo.com/2009/02/un-client-sip-en-ligne-de-commande.html">Un client SIP en ligne de commande</a>.</p>
<p>Pour l&#8217;installation du système de synthèse vocale, vous pouvez vous référer à mon précèdent billet sur le sujet : <a href="http://www.csquad.org/2009/08/27/text-to-speech-avec-espeak-mbrola-et-speech-dispatcher/">Text-to-Speech avec eSpeak, MBROLA et Speech Dispatcher</a>.</p>
<h3>Configuration</h3>
<p>Vous devez créer un compte SIP pour Nagios sur votre PABX et tester que l&#8217;enregistrement est fonctionnel. </p>
<p>Pour cela vous avez besoin d&#8217;un fichier de configuration spécifique à Nagios pour PJSUA, dans <em>/etc/nagios/sip.cfg</em> par exemple :<br />
<code><br />
--id sip:nagios@pabx.csquad.lan<br />
--registrar sip:pabx.csquad.lan<br />
--realm *<br />
--username nagios<br />
--password secret<br />
</code></p>
<p>Vous pouvez ensuite tester l&#8217;enregistrement en ligne de commande :<br />
<code>$ pjsua --config-file /etc/nagios/sip.cfg<br />
...<br />
 11:17:05.376    pjsua_acc.c  sip:nagios@pabx.csquad.lan: registration success, status=200 (OK), will re-register in 300 seconds</code></p>
<p>Un appel de test :<br />
<code>$ pjsua --config-file /etc/nagios/sip.cfg --null-audio sip:secretariat@pabx.csquad.lan</code></p>
<p>Ensuite un appel de test audio avec un message :<br />
<code> $ espeak -v mb/mb-fr1 "E.T. téléphone maison" | /usr/local/bin/mbrola /usr/share/mbrola/fr1/fr1 - test.wav<br />
$ pjsua --config-file /etc/nagios/sip.cfg --play-file=test.wav --auto-play --null-audio sip:secretariat@pabx.csquad.lan<br />
$ rm -f test.wav<br />
</code></p>
<p>On met le tout dans un petit script <a href="http://expect.nist.gov/">expect</a> pour prendre en charge la déconnections de manière polie :<br />
<code><br />
#!/usr/bin/expect  --<br />
set timeout 45<br />
set addr [lindex $argv 0]<br />
set text [lindex $argv 1]<br />
exec /usr/bin/espeak -v mb/mb-fr1 $text | /usr/local/bin/mbrola /usr/share/mbrola/fr1/fr1 - /tmp/phone-call.wav;<br />
spawn /usr/local/bin/pjsua --app-log-level=3 --config-file /etc/nagios/sip.cfg --play-file /tmp/phone-call.wav --auto-play --null-audio --max-calls 1 sip:$addr<br />
expect {<br />
        "DISCONNCTD" {<br />
                exit<br />
        }<br />
        timeout {<br />
                send "h\n"<br />
                exit<br />
        }<br />
        eof {<br />
                exit<br />
        }<br />
}<br />
</code><br />
Et voilà <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Il ne nous reste plus qu&#8217;à configurer ce type de notification dans Nagios.<br />
Pour cela, il faut modifier le fichier <em>contacts.cfg</em> :<br />
<code># 'nagios-phone' contact definition<br />
define contact{<br />
        contact_name                    nagios-phone<br />
        alias                           Nagios Admin via Phone<br />
        service_notification_period     24x7 ; mouahahahahahaha<br />
        host_notification_period        24x7 ; moiahahahahahahah<br />
        service_notification_options    w,u,c,r<br />
        host_notification_options       d,u,r<br />
        service_notification_commands   notify-by-phone<br />
        host_notification_commands      host-notify-by-phone<br />
        email sip:secretariat@pabx.csquad.lan<br />
        }<br />
</code><br />
Puis le fichier <em>misccommands.cfg</em> :<br />
<code># 'notify-by-phone' personnal command definition<br />
define command{<br />
  command_name notify-by-phone<br />
  command_line /usr/local/bin/phone-call.sh $CONTACTEMAIL$ "$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$"<br />
}<br />
# 'host-notify-by-phone' personnal command definition<br />
define command{<br />
  command_name host-notify-by-phone<br />
  command_line /usr/local/bin/phone-call.sh $CONTACTEMAIL$ "Host $HOSTSTATE$ alert for $HOSTNAME$!"<br />
}<br />
</code><br />
Ensuite, vous pouvez définir <em>nagios-phone</em> comme un contact pour des services ou hosts. </p>
<p>Il faut aussi modifier la valeur de la variable <a href="http://nagios.sourceforge.net/docs/2_0/configmain.html#notification_timeout">notification_timeout</a> dans le fichier de configuration <em>nagios.cfg</em>, pour avoir le temps de décrocher le téléphone et d&#8217;en tendre le message. </p>
<h3>Conclusion</h3>
<p>Vous n&#8217;avez plus aucune excuse pour ne pas brancher vos esclaves^Wéquipe d&#8217;administrateurs systèmes directement sur le système de surveillance de vos serveurs <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<p>Plus sérieusement, la notification par téléphone est une méthode très intrusive. Il est nécessaire de décrocher le téléphone. Il faut donc l&#8217;utiliser avec parcimonie. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2009/12/09/notifications-nagios-par-telephone/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

