====== Ajout d'un script dans les commandes Nagios ====== ===== Présentation ===== Tutoriel décrivant l'installation et la configuration d'un script en tant que commande Nagios. Cela permet notamment d'utiliser les scripts développés par Linagora, disponibles dans la rubrique [[::contrib::supervision]]. ===== Pré-requis du script ===== Le script (ou plugin) à ajouter dans Nagios doit respecter plusieurs critères : * être exécutable sur le système d'exploitation hébergeant Nagios, avec les droits de l'utilisateur Nagios (classiquement ''nagios''). * afficher un message, de préférence une seule ligne, décrivant la situation du service (par exemple : Temps de réponse OK - 0.564 secondes). * posséder un code de retour (généralement renvoyé par la fonction ''exit'') qui indique le statut du service : * valeur 0 : OK (le service fonctionne correctement). * valeur 1 : Warning (le service fonctionne en mode dégradé). * valeur 2 : Critical (le service ne fonctionne plus). * valeur 3 : Unknown (impossible de déterminer l'état du service). Le premier critère implique que le système d'exploitation possède les programmes et les librairies nécessaires à l'exécution du script. Pour les scripts Perl par exemple, il faut s'assurer que les modules utilisés sont bien présents dans le système. ===== Conventions ===== Pour la suite du tutoriel, il est supposé que Nagios est installé dans le répertoire ''/usr/local/nagios'', sa configuration dans le sous-répertoire ''etc/'', ses scripts dans le sous-répertoire ''libexec/'' et ses binaires dans le sous-répertoire ''bin/''. Le script (ou plugin) à installer est nommé ''check_exemple''. Ce script prend 4 arguments en ligne de commande : * -H : le nom ou l'adresse IP de la machine à superviser. * -p : le port du programme à superviser. * -w : le niveau d'alerte Warning. * -c : le niveau d'alerte Critical. Par exemple : # ./check_exemple -H 192.168.100.1 -p 389 -w 5 -c 10 Ce script sera utilisé pour créer le service "Exemple" associé à la machine "Machine" (déjà configurée dans les hôtes de Nagios). Il convient donc d'adapter les commandes en fonction du nom du script, de ses paramètres et du répertoire d'installation de Nagios. ===== Installation du script ===== Il suffit de copier le script dans le répertoire des scripts Nagios et de le rendre exécutable : # cp check_exemple /usr/local/nagios/libexec/ # chmod 755 /usr/local/nagios/libexec/check_exemple ===== Création d'une commande dans Nagios ===== La bonne connaissance des paramètres du script intervient ici. Il est possible de générer des variables dans Nagios dont la valeur sera indiquée dans la définition du service associé à une machine, ces variables étant ensuite utilisées pour remplir les arguments du script. Il est également possible de fixer la valeur des arguments du script lors de la création de la commande dans Nagios, évitant ainsi de préciser ces valeurs à chaque définition d'un service associé à une machine. Dans notre exemple le script ''check_exemple'' prend 4 arguments. L'argument -H doit prendre l'adresse IP de la machine distante où tourne le programme à superviser, il faudrait qu'il soit rempli automatiquement par l'adresse IP associée à cette machine définie dans Nagios. L'argument -p désigne le port d'écoute, il est préférable qu'il soit associé à une variable de Nagios, au cas où ce port varie d'une machine supervisée à l'autre, ou bien si plusieurs instances du service supervisé tournent sur la même machine, écoutant alors sur des ports différents. Les deux derniers arguments (-w et -c) sont les seuils d'alertes, ils seront fixés ici dans la commande. En modifiant leur valeur dans la commande, cela sera pris en compte pour tous les services associés aux machines, ce qui évite de fastidieuses opérations de mise à jour en cas de reréglage des seuils. La définition de la commande prend en compte les choix précédents, elle est donc également à adapter en fonction de la nature du script. Pour plus de simplicité dans les manipulations, se rendre dans le répertoire d'installation de Nagios : # cd /usr/local/nagios Éditer le fichier ''checkcommands.cfg'' : # vi etc/checkcommands.cfg Ajouter ces lignes à la fin du fichier : define command command_name exemple command_line $USER1$/check_exemple -H $HOSTADDRESS$ -p $ARG1$ -w 5 -c 10 Enregistrer et fermer le fichier. La commande ''exemple'' est à présent disponible dans Nagios. ===== Définition d'un service pour une machine supervisée ===== Les machines sont déclarées dans le fichier ''etc/hosts.cfg'' et leurs services associés dans ''etc/services.cfg''. Éditer ce dernier : # vi etc/services.cfg Le service ''generic-service'' est défini au début du fichier, il sera utilisé pour déclarer le service ''Exemple''. Ajouter ces lignes dans le fichier : define service use generic-service host_name Machine service_description Exemple is_volatile 0 check_period 24x7 max_check_attempts 3 normal_check_interval 3 retry_check_interval 1 contact_groups admin notification_interval 120 notification_period 24x7 notification_options w,u,c,r check_command exemple!389 Enregistrer et fermer le fichier. Le service ''Exemple'' a été créé pour la machine ''Machine''. ===== Redémarrage de Nagios ===== Avant de redémarrer Nagios, s'assurer que la configuration est valide : # bin/nagios -v etc/nagios.cfg Si aucune erreur n'est détectée, redémarrer le service Nagios : # /etc/init.d/nagios restart Le service ''Exemple'' apparaît maintenant dans l'interface Web ! Contributeurs : [[::info::authors::coudot]]