Dans la suite logique de la mise en place d’Icinga, nous allons voir comment créer notre premier script bash pour Icinga et comment l’ajouter au localhost.
Pour commencer, voici 2 liens sur la création de plugin pour Nagios :
- http://nagiosplug.sourceforge.net/developer-guidelines.html
- http://debianclusters.cs.uni.edu/index.php/Creating_Your_Own_Nagios_Plugin
Et une traduction rapide du tableau du premier lien :
Valeur Numérique | Statut | Description |
---|---|---|
0 | OK | Le plugin a été capable de vérifier le service et celui-ci semble fonctionner correctement. |
1 | Warning | Le plugin a été capable de vérifier le service mais celui-ci semble au dessus de certains seuil d’alerte ou il ne fonctionne pas correctement. |
2 | Critical | Le plugin a détecté que le service ne fonctionnait pas ou qu’il était au-dessus d’un seuil critique. |
3 | Unknow | Des arguments incorrects ont été passé au plugin ou des échecs de bas niveau interne au plugin (par exemple : ne peut ouvrir un socket TCP) qui l’empêchent d’exécuter l’opération spécifiée. Les erreurs de niveau supérieur (tels que les erreurs de résolution de noms, timeout socket, etc) sont en dehors du contrôle des plugins et ne devrait généralement pas être déclarés comme des états inconnus. |
Ce tableau comprend le valeur que notre script doit retourner à Icinga pour définir les états « Ok », « Warning », « Critical » et « Unknow ».
Le script
Pour mettre en pratique le tableau ci-dessus, nous allons créer le fichier « monscript.sh » contenant le code suivant :
# !/bin/bash if [ -e "/root/fichier" ]; then echo "Fichier trouvé" exit 0 else echo "Fichier non trouvé" exit 2 fi |
Ce script tout simple va vérifier si un fichier existe et nous renvoyer un état critique si le fichier est introuvable.
Mise en place du script
On commence par copier le script dans le répertoire « libexec » d’Icinga et on lui associe les bons droits.
cp monscript.sh /usr/local/icinga/libexec/ chown icinga:icinga /usr/local/icinga/libexec/monscript.sh chmod u+x /usr/local/icinga/libexec/monscript.sh |
Ensuite, nous devons créer un service auquel nous associons ce script puis nous rajouterons le service à notre serveur. Nous devons nous rendre dans le répertoire « etc/objects » d’Icinga et éditer le fichier « commands.cfg »
cd /usr/local/icinga/etc/objects/ vi commands.cfg |
Et on rajoute le contenu suivant :
# 'check_fichier' define command{ command_name check_fichier command_line $USER1$/monscript.sh } |
Le paramètre « command_name » définit le nom utilisé pour appeler le service dans la configuration d’un serveur ou d’un groupe de serveur. Le paramètre « command_line » dit quel script il faut appeler, la variable « $USER1$ » correspond au chemin « /usr/local/icinga/libexec ».
Maintenant nous devons rajouter notre commande dans le fichier de configuration de notre serveur. Nous allons donc éditer le fichier « localhost.cfg » :
vi localhost.cfg |
Et on ajoute les lignes suivantes dedans :
define service{ use local-service ; Name of service template to use host_name localhost service_description Check File check_command check_fichier } |
« use » défini le template utilisé par le service (voir le fichier « templates.cfg »). Le paramètre « check_command » définit quelle commande est appelée, il faut reporter le « command_name » utilisé dans le fichier « commands.cfg ». Je pense que les paramètres « host_name » et « service_description » possèdent des noms assez explicites.
Enfin, il ne vous reste plus qu’à redémarrer Icinga via la commande :
/etc/init.d/icinga restart |
Si vous avez des messages d’erreurs vérifier vos modifications, pour commencer je vous conseille de rajouter le service puis de redémarrer une première fois « Icinga », puis de rajouter le service au serveur et de redémarrer « Icinga » une nouvelle fois.
Notre script dans Icinga
Une fois que tout est en place, vous devriez voir dans « Icinga » notre nouveau service.
On peut voir au passage un petit soucis au niveau des accents.