Nous allons dans ce post écrire un plugins (très simple) pour Nagios. Le corps de ce plugins pourra vous servir de base pour réaliser des plugins plus complexes.
Suite à un post sur l'installation de Nagios, je me suis penché sur l'écriture d'un plugins permettant de vérifier qu'un processus est bien lancé sur un serveur distant.
Voici ce que je l'on attend de notre plugins:
- Ouvrir une session SSH vers le serveur distant
- Lancement d'un script vérifiant si un processus (testd) est lancé
- Renvoie de l'état du processus (OK / ERROR / WARNING)
- OK: Le processus (testd) est lancé et fonctionne correctement
- ERROR: Le processus n'est pas lancé
- WARNING: Le processus est lancé mais ne fonctionne pas correctement
Avant d'entrer dans le vif du sujet, il faut savoir que les plugins Nagios sont de simple "scripts shell" retournant un code de status. Ces plugins sont localisés dans le répertoire /usr/lib/nagios/plugins (sous Linux). Un petit coups de ls donne la liste des plugins installés par défaut:
# ls
check_http check_pgsql check_smtp check_udp2 check_imap check_mysql check_ping check_spop check_udrelay term_power check_clamd check_jabber check_mysql_query check_pop check_ssmtp check_dns check_ldap check_nntp check_scheduler check_tcp check_ftp check_ldaps check_nntps check_simap check_udp ...
Nous allons donc dans un premier temps créer le plugins qui va lancer la commande sur le serveur distant:
# vi check_testd
#!/bin/sh
##################################################################
# Creation: Nicolargo
# Last Modification:
# This script checks testd daemon is running on a server
##################################################################ssh nagios@$1 /usr/local/bin/nagios_testd.pl
Une fois l'automatisation du SSH effectuée entre votre serveur Nagios et votre serveur distant (il ne faut pas que le script demande le password...). Il reste à créer le script nagios_testd.pl (je l'ai developpé en perl mais rien n'empêche de le faire en SH) dans le réperoire /usr/local/bin du serveur distant.
# vi /usr/local/bin/nagios_testd.pl
#!/bin/sh
##################################################################
# Creation: NicoLargo
# Last Modification:
# This script is polling if testd daemon is running
##################################################################STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4ps auxw | grep [t]estd | grep -v nagios > /dev/null
STATE=$?
if [ "$STATE" = "$STATE_OK" ]
then
echo "TESTD OK"
exit 0
else
echo "TESTD Failed"
exit $STATE_CRITICAL
fi
Pour tester votre plugins, rien de plus simple, il suffit de lancer la ligne de commande sur votre serveur Nagios:
# /usr/lib/nagios/plugins/check_testd.sh monserveurdistant.mondomaine.com
TESTD OK
Si cela ne fonctionne pas, il faut d'abord vérifier que les fichiers ont les bons droits (lecture et execution) et que le SSH fonctionne correctement entre les deux machines.
Une fois le plugins validé, il ne reste plus qu'a l'intégrer dans vos fichiers de configuration.
# vi /etc/nagios/checkcommands.cfg
...
# 'check_testd' command definition
define command{
command_name check_testd
command_line $USER1$/check_testd $HOSTADDRESS$
}
...
et enfin:
# vi /etc/nagios/services.cfg
...
define service{
use generic-service
host_name monserveurdistant.mondomaine.com
service_description TESTD
check_command check_testd
}
...
Voili a+






Réseau

Abonnez-vous
16 commentaires au billet “Creation d'un plugins pour Nagios”
Bonjour Nico, j'ai terminé l'install de NAGIOS et j'ai ajouté DEUX SERVEURS,
J'ai deja configuré l'espace disque, le CPU LOAD etc etc
Cependant j'aimerais Rajouter le Ping etc.. Il faut configurer dans le fichier commands.cfg
Pourrais tu m'indiquer où je pourrais trouver un tutoriel surement dejà fait.
Merci
normalement la commande PING est de base.
Tu as juste a mettre le service associé au ton hote (ici , je l'ai appelé "serveur") :
define service {
use generic-service
host_name serveur
service_description Ping test
check_command check_ping!100.0,20%!500.0,60%
notification_interval 30
notification_period 24x7
notification_options c,d
contact_groups admins
}
naturellement , tu peux modifier l'intervalle de natification , ainsi que les options (c=critical , d=down , etc etc...)
Bonjour,
Je cherche une liste de plugins pour Windows qui fonctionne avec NRPE.
JE m'explique j'ai mon appli Nagios qui est installé sur une Debian, et grace à check_nrpe je vais faire des vérifications sur des machines windows, mais je n'est trouvé que très peu de plugins.
en Faite j'ai seulement : cpuload_nrpe_nt.exe ,diskspace_nrpe_nt.exe ,memload. Je voudrais savoir s'il existe des plugins tout pret comme par exemple check_users compatible avec NRPE
Cordialement.
Benjamin
Bonjour ,
Tout d'abord, je souhaitais te remercier pour toutes tes explications, elles m'ont bien souvent été utiles.
Je souhaiterais faire remonter dans Nagios une alerte concernant le résultat d'un traitement. Pour faire simple, je ne récupère que la dernière ligne et je vérifie s'il y un OK ou un ERREUR dedans. J'aimerais donc que Nagios puisse le faire apparaître avec les couleurs adéquates. J'ai donc modifié un peu ton script de ci-dessus, et celui ci fonctionne parfaitement en bash , pour le check mais nagios n'arrive pas à l'interpréter. Aurais tu une petite idée ?
le script :
#!/bin/sh
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4
tail -1 /var/www/html/log_test | grep OK # > /dev/null
STATE=$?
if [ "$STATE" = "$STATE_OK" ]
then
echo “OK”
exit 0
else
echo “Failed”
exit $STATE_CRITICAL
fi
Nagios me renvoie un "(Return code of 127 is out of bounds - plugin may be missing) ".
J'ai défini (très sommairement je pense ) commands.cfg et services.cfg
define command {
command_name /usr/local/nagios/libexec/erreur_log.sh
command_line /usr/local/nagios/libexec/erreur_log.sh
}
define service{
use template-services
host_name machine
service_description log_test
check_command /usr/local/nagios/libexec/erreur_log.sh
}
Cela ne convient pas, mais je ne sais pas vraiment ce qu'il faut faire.
Merci pour ton aide
Franck
@franck: Deux choses:
La première:
# sudo chown nagios /usr/local/nagios/libexec/erreur_log.sh
# sudo chmod 755 /usr/local/nagios/libexec/erreur_log.sh
Puis la seconde au niveau de la conf:
define command {
command_name erreurlog
command_line /usr/local/nagios/libexec/erreur_log.sh
}
define service{
use template-services
host_name machine
service_description log_test
check_command erreurlog
}
A essayer...
Merci
Cela fonctionne parfaitement. Je vais pouvoir modifier toutes les alertes un peu tangeantes ....
Merci pour ce tuto Nico
Ha si j'ai une ptite question :
Comment peut on envoyer une variables au programme et la récupérer?
J'avait pensé a:
en définissant dans centreon check_Tests $ARG1 et dans le service mettre dans argument !10 par exemple mais ca ne marche pas.
Oki c'est bon j'ai trouvé:
ne pas mettre nagios@$1 mais simplement $1 par exemple et le récupérer dans le programme grace à la variable $1
Vraiment Merci
Bonjour,
J'ai poste quelque chose sur votre forum et arrive pas a avoir de reponse. Je le copie colle ici en esperant avoir une reponse de votre part. Merci.
Bonjour,
Apres avoir bataille haut et fort, j'ai craque et decide de tout reinstaller sans passer par la commande yum qui en fait avait installe une trop vieille version de nagios...
Mais maintenant tout fonctionne a merveille : j'arrive a visualer mon serveur nagios et celui que je voulais monitorer.
Cependant, je suis un peu decu, je pensais pouvoir monitorer le serveur windows beaucoup plus precisement c'est a dire :
- avoir des courbes en temps reel des differents metrics (CPU, Memory Usage, VM Memory)
- pouvoir monitorer les processus java.exe, httpd.exe,mysql.exe ... (CPU, Memory Usage,...)
Cela est-il possible ?
Si je dois ajouter des plugins externes qui puissent peut etre repondre a mes attentes par exemple ceux presents dans cette page http://exchange.nagios.org/directory/Pl … s/Windows, Comment dois-je faire pour les integrer ? Je ne trouve pas de tutoriel sur cette partie la.
En vous remerciant encore, Nagiosement
Thomas.r
@ThomaR: tout est dit dans ce billet, il faut dans un premier temps récupérer le plugin en question et le mettre dans le répertoire /usr/local/nagios/libexec/ (ou /usr/lib/nagios/plugins/) . Puis lui donner les même droits que les autres fichiers de ce répertoire. Ensuite le déclarer dans le fichier /usr/local/nagios/etc/objects/commands.cfg (ou /etc/nagios/checkcommands.cfg) et enfin l'utiliser dans un de vos fichiers de conf.
Pour surveiller vos machines WIndows je vous conseille cependant la lecture de ce billet:
http://blog.nicolargo.com/2007/10/surveiller-vos-serveurs-windows-avec-nagios.html
Salut NicoLargo,
Encore merci pour le blog le forum et les differents tutoriels disponibles.
J'aimerai juste insister sur un point que j'ai souleve dans le commentaires que j'ai mis :
Peut-on monitorer avec Nagios les differents processus presents sur une machine et recuperer les valeurs de leur consommation en ressources ? Connais tu un plugin qu'il le fait ou dois je en creer un ?
Merci beaucoup pour ton intervention
@ ThomasR: La réponse est oui. Dans le lien que je t'ai donné dans mon précédant message, tu as un exemple ou le serveur nagios supervise la charge CPU, la mémoire et la consommation disque d'un PC sous WIndows. Pour al supervision de processus Java, je pense que le mieux est de créer ton propre plugin.
slt tt le monde,
je veus dévlopper un plugin d'envoi d'un mail en cas du problème il n'y pas un tuto qui m'aide au devloppemen du plugin?
merci d'avance
slt tt le monde,
je veu devlopper un plugin d'envoi un mail en cas d'alerte, il n'y pas un tuto qui m'aide à devlopper ce plugin??
au moin la structure générale du dévloppemen du plugin
merci d'avance
Publier un commentaire
Utiliser
pour lier des documents à vos commentaires.
Pour des discutions techniques, merci d'utiliser le forum.