<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://blaireaulinux.fr//wiki/index.php?action=history&amp;feed=atom&amp;title=Event_handler</id>
	<title>Event handler - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="http://blaireaulinux.fr//wiki/index.php?action=history&amp;feed=atom&amp;title=Event_handler"/>
	<link rel="alternate" type="text/html" href="http://blaireaulinux.fr//wiki/index.php?title=Event_handler&amp;action=history"/>
	<updated>2026-05-28T06:59:09Z</updated>
	<subtitle>Historique des révisions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.37.0</generator>
	<entry>
		<id>http://blaireaulinux.fr//wiki/index.php?title=Event_handler&amp;diff=42&amp;oldid=prev</id>
		<title>AdminWiki : Page créée avec « Category:nagios  =Principe=  L&#039;event_hanlder est un mécanisme de Nagios qui permet d&#039;exécuter automatiquement une commande lors d&#039;un changement d&#039;état (passage de O... »</title>
		<link rel="alternate" type="text/html" href="http://blaireaulinux.fr//wiki/index.php?title=Event_handler&amp;diff=42&amp;oldid=prev"/>
		<updated>2013-09-16T13:38:46Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « &lt;a href=&quot;/wiki/index.php?title=Cat%C3%A9gorie:Nagios&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Catégorie:Nagios (page inexistante)&quot;&gt;Category:nagios&lt;/a&gt;  =Principe=  L&amp;#039;event_hanlder est un mécanisme de Nagios qui permet d&amp;#039;exécuter automatiquement une commande lors d&amp;#039;un changement d&amp;#039;état (passage de O... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:nagios]]&lt;br /&gt;
&lt;br /&gt;
=Principe=&lt;br /&gt;
&lt;br /&gt;
L&amp;#039;event_hanlder est un mécanisme de Nagios qui permet d&amp;#039;exécuter automatiquement une commande lors d&amp;#039;un changement d&amp;#039;état (passage de OK, WARNING ou CRITICAL vers n&amp;#039;importe quel autre de ces états). On peut alors envisager de relancer automatiquement un process lorsque nagios détecte sa panne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Attention :&amp;#039;&amp;#039;&amp;#039; lorsqu&amp;#039;on met en place ce système, il faut bien faire attention à ce que ce processus ne parte pas en boucle. En effet, si le process surveillé est vraiment défaillant, nagios va le relancer, il va replanter aussitôt, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Techniquement, on va créer un script de relance du service sur le client nagios. Puis on va rajouter une commande dans la configuration nagios du service surveillé, cette commande se chargeant de lancer le script créé précédemment. Il faut veiller à ce que nagios ait les droits d&amp;#039;exécution pour ce script ; prévoir éventuellement un sudo ou équivalent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Exemple de mise en place=&lt;br /&gt;
&lt;br /&gt;
On va prendre un exemple simple : la surveillance du service apache, qui sera relancé automatiquement.&lt;br /&gt;
&lt;br /&gt;
==Sur le client nagios==&lt;br /&gt;
&lt;br /&gt;
Dans un cas simple comme celui-ci, il n&amp;#039;est pas nécessaire de créer un script de relance en local sur le client. On peut intégrer la commande de relance directement dans la configuration de l&amp;#039;event_handler. Mais ici nous allons quand même le créer pour avoir un exemple complet.&lt;br /&gt;
&lt;br /&gt;
Nous allons donc créer le script /opt/nagios/event_handler/httpd_restart.sh (peu importe l&amp;#039;emplacement, il faut juste le connaître pour le reporter plus loin) :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Relance du serveur apache par nagios&lt;br /&gt;
 &lt;br /&gt;
 sudo /etc/init.d/httpd restart&lt;br /&gt;
&lt;br /&gt;
Puis on donne les droits d&amp;#039;exécution dessus et on le fait appartenir à nagios :&lt;br /&gt;
 chmod +x /opt/nagios/event_handler/httpd_restart.sh&lt;br /&gt;
 chown nagios:nagios /opt/nagios/event_handler/httpd_restart.sh&lt;br /&gt;
&lt;br /&gt;
Note : le script sera lancé par le compte nagios, et celui-ci n&amp;#039;a pas les droits pour relancer le service apache. Il faut donc trouver un moyen de lui permettre de le faire, le plus propre étant à mon sens l&amp;#039;utilisation de sudo. D&amp;#039;où le sudo dans le script. Pensez-bien à configurer correctement le sudoers, je ne rentrerai pas dans ces détails ici.&lt;br /&gt;
&lt;br /&gt;
Il est prudent de tester que le script fonctionne avant de passer à la suite. Bien sûr, il ne faut pas le faire à un moment ou ça va planter les utilisateurs !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sur le serveur nagios==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur nagios, il y a trois étapes : modification du service, création de la commande et, point un peu plus complexe, la création du script qui va déclencher le lancement du script sur le client.&lt;br /&gt;
&lt;br /&gt;
===Modification du service===&lt;br /&gt;
&lt;br /&gt;
Il faut éditer la configuration du service pour ajouter les deux lignes en gras :&lt;br /&gt;
&lt;br /&gt;
 define service{&lt;br /&gt;
   use                  generic-service&lt;br /&gt;
   service_description  io-svc&lt;br /&gt;
   check_period         24x7&lt;br /&gt;
   notification_period  24x7&lt;br /&gt;
   check_command        check_nrpe!check_io_svc&lt;br /&gt;
   host_name            serveur_a_surveiller&lt;br /&gt;
   contact_groups       none&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;event_handler        http-restart&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;event_handler_enabled 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
La première ligne indique que l&amp;#039;event-handler doit faire appel à la commande http-restart (qu&amp;#039;on va créer juste après).&lt;br /&gt;
&lt;br /&gt;
La deuxième ligne active l&amp;#039;event-handler pour ce service. A noter qu&amp;#039;il faut également que l&amp;#039;event-handler soit actif au niveau général, pour tous les services nagios. Cela se fait dans &amp;#039;&amp;#039;&amp;#039;nagios.cfg&amp;#039;&amp;#039;&amp;#039;, variable &amp;#039;&amp;#039;&amp;#039;enable_event_handlers&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Maintenant, on va définir la commande &amp;#039;&amp;#039;&amp;#039;http-restart&amp;#039;&amp;#039;&amp;#039; (on peut l&amp;#039;écrire à la suite, dans le même fichier de conf) :&lt;br /&gt;
&lt;br /&gt;
 define command{&lt;br /&gt;
   command_name         http-restart&lt;br /&gt;
   command_line          $USER1$/eventhandlers/http-restart $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Cette commande possède deux ligne : &amp;#039;&amp;#039;&amp;#039;command_name&amp;#039;&amp;#039;&amp;#039;, qui doit correspondre au nom donné sur la ligne &amp;#039;&amp;#039;&amp;#039;event_handler&amp;#039;&amp;#039;&amp;#039; du service, et la ligne &amp;#039;&amp;#039;&amp;#039;command_line&amp;#039;&amp;#039;&amp;#039;, qui est la commande qu&amp;#039;on va lancer. On va passer plusieurs plusieurs variables en paramètre, que je vais détailler juste après.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Le script côté client===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[EN COURS]&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Script nagios de relance apache&lt;br /&gt;
 &lt;br /&gt;
 SERVICESTATE=$1&lt;br /&gt;
 SERVICESTATETYPE=$2&lt;br /&gt;
 SERVICEATTEMPT=$3&lt;br /&gt;
 echo &amp;quot;SERVICESTATE=$SERVICESTATE SERVICESTATETYPE=$SERVICESTATETYPE SERVICEATTEMPT=$SERVICEATTEMPT&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 action() {&lt;br /&gt;
     ssh nagios@serveur_a_surveiller &amp;quot;/opt/nagios/event_handler/httpd_restart.sh&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$SERVICESTATE&amp;quot; in&lt;br /&gt;
     OK)&lt;br /&gt;
         # Pas de probleme. On ne fait rien.&lt;br /&gt;
         ;;&lt;br /&gt;
     WARNING)&lt;br /&gt;
         # Warning. On ne fait rien.&lt;br /&gt;
         ;;&lt;br /&gt;
     UNKNOWN)&lt;br /&gt;
         # Etat inconnu. On ne fait rien.&lt;br /&gt;
         ;;&lt;br /&gt;
     CRITICAL)&lt;br /&gt;
         # Etat critique. On ne va relancer apache qu&amp;#039;au deuxieme etat CRITICAL SOFT, ou a l etat HARD.&lt;br /&gt;
         case &amp;quot;$SERVICESTATETYPE&amp;quot; in&lt;br /&gt;
             SOFT)&lt;br /&gt;
                 # Verification du nombre de tentatives&lt;br /&gt;
                 case &amp;quot;$SERVICEATTEMPT&amp;quot; in&lt;br /&gt;
                     2)&lt;br /&gt;
                         # On relance apache.&lt;br /&gt;
                         echo &amp;quot;Restarting apache.&amp;quot;&lt;br /&gt;
                         action&lt;br /&gt;
                         ;;&lt;br /&gt;
                 esac&lt;br /&gt;
                 ;;&lt;br /&gt;
             HARD)&lt;br /&gt;
                 # On relance apache.&lt;br /&gt;
                 echo &amp;quot;Restarting apache&amp;quot;&lt;br /&gt;
                 action&lt;br /&gt;
                 ;;&lt;br /&gt;
         esac&lt;br /&gt;
         ;;&lt;br /&gt;
 esac&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Relance de nagios===&lt;br /&gt;
&lt;br /&gt;
Une fois que tout est configuré, il faut relancer nagios pour que ce soit pris en compte.&lt;br /&gt;
&lt;br /&gt;
 # service nagios checkconfig&lt;br /&gt;
 # service nagios reload&lt;br /&gt;
&lt;br /&gt;
Il n&amp;#039;y a plus qu&amp;#039;à attendre que ça plante pour vérifier qu&amp;#039;on a bien tout mis en place. :-)&lt;/div&gt;</summary>
		<author><name>AdminWiki</name></author>
	</entry>
</feed>