Quelques exemples de services pour Nagios. N'hésitez pas à donner d'autres exemples via les commentaires ou ma fiche de contact.
J'intégrerai les exemples les plus pertinents au billet.
On menu du jour:
- superviser un serveur Web (HTTP)
- superviser un serveur Web sécurisé (HTTP over SSL)
- superviser un serveur de messagerie (mail)
- superviser un serveur VoIP (sip)
- superviser un serveur de fichiers (samba)
- superviser un serveur annuaire (LDAP)
- superviser un serveur de base de données (mySQL ou pgSQL)
- superviser un serveur réseau (DHCP et DNS)
- supervision de disques RAID (carte hardware HP Proliant)
- supervision de disques RAID 1 logiciel sous FreeBSD
- supervision d'un serveur Asterisk (suivre ce lien)
- supervision d'un trunk IAX sur un serveur Asterisk
< tous les plats sont accompagnés de frites et de salade >
Superviser un serveur Web
Nous utilisons pour cela le plugin check_http qui permet de tester si un serveur HTTP est bien lancé sur la machine à superviser.
Exemple:
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}
define host{
use generic-host
host_name monserveur
alias Serveur Web
address 192.168.0.100
}
define service{
use generic-service
host_name monbeauserveur
service_description HTTP
check_command check_http
}
Pour aller plus loin:
Le plugin utilise par défaut une requête sur le port TCP/80. Pour changer ce port, vous pouvez utiliser l’option -p et créer une nouvelle commande (à utiliser dans le check_command de votre nouveau service):
define command{
command_name check_http_8080
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$-p 8080
}
Superviser un serveur Web sécurisé
Si votre serveur Web est sécurisé avec le protocole SSL. Il faut créer une nouvelle commande basée sur check_http.
Exemple:
define command{
command_name check_http
command_line $USER1$/check_http -S -I $HOSTADDRESS$ $ARG1$
}
define host{
use generic-host
host_name monserveur
alias Serveur Web
address 192.168.0.100
}
define service{
use generic-service
host_name monbeauserveur
service_description HTTPs
check_command check_https
}
Superviser un serveur de messagerie
Pour surveiller un serveur Mail proposant les protocoles SMTP, POP3 et IMAP (merci Dovecot), nous allons utiliser les plugins check_smtp, check_pop et check_imap.
Exemple:
define host{
use generic-host
host_name monserveur
alias Serveur de messagerie
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description SMTP
check_command check_smtp
}
define service{
use generic-service
host_name monserveurmail
service_description POP
check_command check_pop
}
define service{
use generic-service
host_name monserveurmail
service_description IMAP
check_command check_imap
}
Superviser un serveur Asterisk
Pour surveiller un serveur SIP (par exemple votre serveur Asterisk), nous allons utiliser le plugin check_sip. n’étant pas fourni en standard, il faut d’abord l’installer puis le configurer avant de pouvoir l’utiliser comme service.
Installation:
cd /usr/src
wget http://www.bashton.com/downloads/nagios-check_sip-1.2.tar.gz
tar zxvf nagios-check_sip-1.2.tar.gz
cd nagios-check_sip-1.2
cp check_sip /usr/local/nagios/libexec/
chown apache:nagios /usr/local/nagios/libexec/check_sip
Configuration (à ajouter dans votre fichier commands.cfg de Nagios):
###### SIP#####
define command{
command_name check_sip
command_line $USER1$/check_sip -H $HOSTADDRESS$ -u sip:user@mondomaine.com
}
Il faut penser à mettre un nom d’utilisateur valide après l’option -u.
Et enfin un exemple de service:
define host{
use generic-host
host_name monserveur
alias Serveur SIP
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description SIP
check_command check_sip
}
Superviser un serveur de fichiers
Un serveur de fichier peut se baser sur de nombreux protocoles. Nous allons nous focaliser sur un serveur Windows ou Linux (avec Samba), souvent utilisé en entreprise grâce au protocole SMB.
Configuration (à ajouter dans votre fichier commands.cfg de Nagios):
###### SMB #####
define command{
command_name check_smb
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 445
}
Et enfin un exemple de service:
define host{
use generic-host
host_name monserveur
alias Serveur de fichiers
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description SMB
check_command check_smb
}
Superviser un serveur LDAP
Un serveur est souvent le coeur d'un système d'information. C'est donc un poihnt critique à surveiller dans Nagios. Nous allons pour celà utiliser le service check_ldap qui prend en paramètres l'adresse du serveur LDAP ainsi que le DN à tester.
Configuration (à ajouter dans votre fichier commands.cfg de Nagios):
###### LDAP #####
define command{
command_name check_ldap
command_line $USER1$/check_ldap -H $HOSTADDRESS$ -b $ARG1$
}
Exemple de service:
define host{
use generic-host
host_name monserveur
alias Serveur LDAP
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description LDAP
check_command check_ldap!"dc=mondomaine,dc=com"
}
Superviser un serveur de base de données
MySQL et pgSQL sont des serveurs de base de données open-source très répandus. Il existe donc deux plugins spécifiques check_mysql et check_pgsql disponible en standard avec Nagios. Personnellement, je n'utilise pas ces deux plugins car ils peuvent présenter une faille dans votre réseau. En effet, il utilise une requête SQL nécessitant un login/password. Hors ce couple apparaîtra dans la liste des processus lors de l'éxecution du plugin par Nagios.
Je préfère donc utiliser des plugins basés sur check_tcp.
Configuration (à ajouter dans votre fichier commands.cfg de Nagios):
###### SQL #####
define command{
command_name check_pgsql
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 5432
}
define command{
command_name check_mysql
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 3306
}
Exemple de service:
define host{
use generic-host
host_name monserveur
alias Serveur MYSQL
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description MYSQL
check_command check_mysql
}
Superviser un serveur réseau
DHCP et DNS sont la base de votre infrastructure réseau. Nous allons donc utiliser les plugins check_dns et check_dhcp pour les surveiller de prêt.
Configuration (à modifier dans votre fichier commands.cfg de Nagios):
###### DNS #####
define command{
command_name check_dns
command_line $USER1$/check_dns -H www.google.fr -s $HOSTADDRESS$
}
###### DHCP #####
define command{
command_name check_dhcp
command_line $USER1$/check_dhcp -s $HOSTADDRESS$
}
Pour le check_dns, Je vous conseille de mettre un serveur qui ne risque pas de disparaître du jour au lendemain dans les DNS mondiaux en paramètre -H.
Exemple de service DNS:
define host{
use generic-host
host_name monserveur
alias Serveur DNS
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description DNS
check_command check_dns
}
Exemple de service DHCP:
define host{
use generic-host
host_name monserveur
alias Serveur DHCP
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description DHCP
check_command check_dhcp
}
Supervision de disques RAID (carte hardware HP Proliant)
Le but est de surveiller le bon état des disques RAID d'un serveur HP Proliant sour FreeBSD. Nous allons passé par un script lancé par NRPE.
Configuration à faire sur le serveur ou se trouve les disques RAID:
cd /usr/local/libexec/nagios/
wget http://www.klintrup.dk/soren/proliant/check_smartarray.sh
chmod 555 check_smartarray.sh
Il faut également modifier ce script pour qu'il soit exécutable par l'utilisateur Nagios (le user utilisé par NRPE).
Ligne 6> PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin"
Ligne 7> DEVICES="$(sudo camcontrol devlist|grep "COMPAQ RAID"|sed -Ee 's/.*(pass[0-9]{1,3}).*/\1/')"
Ligne 14> DEVICENAME="$(sudo camcontrol devlist|grep ${DEVICE}|sed -Ee 's/.*(da[0-9]{1,3}).*/\1/')"
Ligne 15> DEVICESTRING="$(sudo camcontrol inquiry ${DEVICE} -D|sed -n -e 's/^[^<]*<\([^>]*\)>.*$/\1/p')"
Puis enfin ajouter la ligne suivante au fichier /usr/local/etc/sudoers:
nagios ALL = NOPASSWD: /sbin/camcontrol
Edition du fichier /usr/local/etc/nrpe.cfg:
Ajout de la ligne suivante:
command[check_raid]=/usr/local/libexec/nagios/check_smartarray.sh
Redémarrage du process NRPE:
/usr/local/etc/rc.d/nrpe2 restart
Configuration de Nagios, avec un nouveau service pour surveiller les disques RAID:
define service{
use generic-service
host_name monserveuravecduraid
service_description RAID
check_command check_nrpe!check_raid
}
Supervision de disques RAID 1 logiciel sous FreeBSD
Le but est de surveiller le bon état des disques RAID 1 logiciel d'un serveur sous FreeBSD.
Configuration à faire sur le serveur ou se trouve les disques RAID:
Pour permettre le user nagios à lancer la commande de surveillance des disques RAIS, on doit ajouter la ligne suivante au fichier /usr/local/etc/sudoers:
nagios ALL= NOPASSWD: /sbin/gmirror status
Edition du fichier /usr/local/etc/nrpe.cfg:
Ajout de la ligne suivante:
command[check_raid]=/usr/local/bin/sudo /sbin/gmirror status | tail +2
Redémarrage du process NRPE:
/usr/local/etc/rc.d/nrpe2 restart
Configuration de Nagios, avec un nouveau service pour surveiller les disques RAID:
define service{
use generic-service
host_name monserveuravecduraid
service_description RAID
check_command check_nrpe!check_raid
}
Supervision d'un trunk IAX sur un serveur Asterisk
Quand vous voulez relier deux serveurs Asterisk entre eux, il faut utiliser un trunk IAX. Un trunk IAX est en fait un tunnel UDP (port 4569). Si vous voulez vérifier qu'un serveur Asterisk est apte à recevoir un trunk IAX, il faut lui envoyer une commande "POKE" sur le port UDP/4569, il répondra normalement par un "PONG".
Le script check_iax permet d'automatiser ce test.
Une fois le script compilé (il est écrit en C) et installé dans le répertoire /usr/local/nagios/libexec, il faut créer la commande dans Nagios:
# 'check_iax' command definition, 800ms WARNING, 1000ms CRITICAL
define command{
command_name check_iax
command_line $USER1$/check_iax -H $HOSTADDRESS$ -w 800 -c 1000
}
Ensuite, il ne reste plus qu'a définir unservice associé à une machine hébergeant le serveur Asterisk.
define service{
use generic-service
host_name asterisk
service_description IAX trunk
check_command check_iax
}
Maintenant, a vous de jouer et de proposer de nouveaux exemples de services !





Open-source

Abonnez-vous
17 commentaires au billet “Exemples de check de services Nagios”
Pour surveiller les espaces disque AS400 (iSeries) via snmp (check_snmp_storage.pl)
define command{
command_name check_ASP_AS400
command_line $USER1$/$USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C public -m 'System ASP' -w 70 -c 80 -f -T pu
}
define service{
use generic-service
host_name MoniSeries
service_description ASP
check_command check_ASP_AS4OO
}
Bonsoir Nico, bonsoir à tous,
Un grand bravo aux nombreux billets que tu fournis Nico.
Ils m'ont été d'une grande aide même si, pour installer nagios 3.0.3, je n'ai pu aboutir en les suivants à la lettre.
(pas assez explicite, à mes yeux, quant aux prerequis pour Ubuntu .8.04.LTS.
Abscence de certains liens symboliques cf http://www.nagios-wiki.org )
En effet je manquais d'info quant aux prerequis (serveur LAMP & librairies DIVERSES) pour installer sur Ubuntu 8.04.LTS...Je suis un NOVICE CONFIRMé
sous Linux
J'ai abouti en ayant recours à tes billets, ton blog & d'autres sites, notamment nagios-wiki.org, après avoir corrigé qques erreurs sur la procédure stipulée sur ce dernier. Encore un grand merci.
Je profite de ce message pour t'indiquer qu'une erreur semble s'etre glissée dans ta procédure concernant la commande check_http_8080.
En effet , sauf erreur de ma part lors de mes tests et contre tests, il faut IMPERATIVEMENT LAISSER UN ESPACE avant -p
SINON SYNTAXIQUEMENT LA CONFIGURATION EST OK MAIS LE COMPORTEMENT DE NAGIOS SE RAMENE A UN COMPORTEMENT PAR DEFAUT c'est à dire Adresse=HOSTADRESS et port=80 ce qui engendre "Connexion refusée" en commentaire sur le service check_http.
Il me reste à tester encore qques services, notamment service MySql. Ce sera mon menu de demain, puis je pense que j'en aurai terminé avec nagios...et je poursuivrai avec pnp...donc à bientôt je pense...
PS J'ai été effrayé par l'instal de cacti...peut etre y reviendrai-je + tard
Pour surveiller un serveur web sur un port différent que le port 80 on peut aussi changer la commande originale en mettant le numéro de port en argument
command_line $USER1$/check_http -H $HOSTADDRESS$ -p $ARG1$
et ajouter le service suivant
host_name http://www.mixin.com
service_description check process on http://www.mixin.com
check_command check_http!3500
Celà évite de dupliquer la commande et de pouvoir l'utiliser pour différent service sur un même serveur web
Bonjour, slt tt le monde
jé installé nagios-3.0.3 mé j arrive pa a continuer l'installation des plugins-nagios-1.4.12 et voila la procedure ke jé fai:
#./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin
#make
il commence a compiler .........
jusqua cett erreur
make[1]: *** [check_pgsql.o] Erreur 1
make[1]: Quitte le répertoire `/usr/src/nagios-plugins-1.4.12/plugins'
make: *** [check-recursive] Erreur 1
#make install
check_pgsql.c:44:30: pg_config_manual.h: Aucun fichier ou répertoire de ce typemake[1]: *** [check_pgsql.o] Erreur 1
make[1]: Quitte le répertoire `/usr/src/nagios-plugins-1.4.12/plugins'
make: *** [install-recursive] Erreur 1
la mm erreur aussi
il ya des check ki sont bien installés comm ping .. et d'autres ne sont pas installés comm check_snmp,check_swap,...
svp si kelkun a une idée a ce propos et merci d'avance
Bonjour à tous,
Merci à nico pour ce blog qui est une bouée pour tous les utilisateurs de Nagios, et qui permet d'échanger son expérience.
Concernant ce dernier point, j'aurais justement besoin d'un coup de main.
Je travaille sous Debian, avec Nagios 3.0.2, je supervise plus d'une centaine de service, j'ai donc mis en place les notifications (mails et sms), j'ai pataugé pour pnp (mais ça fonctionne), donc jusque là tout va bien.
Le soucis, c'est que je souhaiterais superviser mes bases Oracle réparties sur d'autres serveurs. Déjà, ayant contacté un support technique d'un partenaire Oracle, j'ai installé le serveur Oarcle sur ma machine afin de pouvoir profiter de la commande tnsping, non inclus dans les clients...
Ensuite je l'ai configuré proprement (suivant tuto oracle), et j'arrive à utiliser sans problème le check_oracle en ligne de commande avec tous mes utilisateurs (root, nagios, oracle, www-data....) mais quand j'essaie de passer ce test dans Nagios, l'interface web me dit " Cannot determine ORACLE_HOME for sid MABASE " comme si je n'avais pas installé Oracle. Je précise aussi que j'ai configuré correctement le tnsnames.ora (je le sais car ça fonctionne en ligne de commande).
Donc si quelqu'un peut m'apporter son aide, ce serait formidable. Merci d'avance.
Re-bonjour à tous,
Après un petit tour sur le net, je vais pouvoir vous faire profiter de la résolution de mon problème.
Comme je l'ai dit, j'utilise Nagios 3.0.2.
Voilà donc la soluce pour monitorer vos bases Oracle, dans le cas où ça fonctionne en ligne de commandes mais pas dans l'interface web:
Dans resource.cfg, mettre:
$USER2$=ORACLE_HOME=chemin_absolu_de_ORACLE_HOME[un espace ici] /usr/local/nagios/libexec
Voila, et le tout sur la même ligne.
Pour connaitre le ORACLE_HOME: echo $ORACLE_HOME
Pour info, j'ai trouvé la soluce ici: http://forums.bfl-solutions.eu/viewtopic.php?p=30832#30832
Bonne journée, Tcho.
@tous: juste pour vous signaler l'ouverture du forum de Nicolargo ou vous pouvez poser vos questions !
http://forum.nicolargo.com
A bientôt !
Nicolargo
Bonjour à tous,
je veux faire un check file sur ma machine local .
j'ai ajouter les commande pour le check sur les fichier
services_nagios2.cfg et localhost_nagios2.cfg
mais ca n'afiiche rien dans la page web de nagios
que dois je faire?
# FILE
define hostgroup {
hostgroup_name file-servers
alias FILE servers
members localhost
}
# recherche fichier
define service {
hostgroup_name file-servers
service_description FILE_age
check_command check_file_age -f /home/asiyoucef/Bureau/test
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
@arslan: vérifie que les droits de tes fichiers sont bon. Il ne faut pas oublier que Ngios lance les plugins en utilisant un utilisateur spécifique...
Tu peux aussi poser ta question sur le forum:
http://forum.alcasat.net
Merci nicolargo. j’ai réussi a intégrer le plugin.
Il fallait créer in fichier check-file.cfg et l’ajouter dans le dossier des config.
ciao
Bonjour,
je veux monitorer un serveur asterisk et j'ai mis ceci pour les droits comme dans le tuto
/usr/src/nagios-check_sip-1.2# chown apache:nagios /usr/local/nagios/libexec/check_sip
chown: usager invalide: `apache:nagios'
est-ce que je peux remplacer apache par www-data ?
Bonjour et merci pour ces exemples.
Pour tester ma base PostgreSQL, j'utilise quant meme check_pgsql car connecte uniquement le port TCP (ou le pipe) ne me parait par pertinent car ca ne teste pas si la database est réactive.
(Je n'ai jamais eu ce genre de probleme avec PostgreSQL mais j'ai deja eu des pb avec d'autres applies qui "hangs" avec évidement les ports toujours présents).
La solution que j'utilise est donc :
- je conserve l'authentification par "ident"
- je cree un user "nagios" sur la base que je veux monitorer comme ca, je teste reelement cette base et non la base template ... juste au cas ou qq'un a droper ma base ;D
- ce user "nagios" n'a que le droit "CONNECT" et ne peut donc rien faire sur la db ...
Voili voila ...
Bye
Laurent
Bonjour,
j'ai un peu de mal avec les "check" sur Nagios.
Le ping et le http fonctionnent bien, mais le snmp-linux-load_average, le snmp-linux-memory, le snmp-linux-swap (dans les templates) m'affichent "unknow" suivi d'un mesage d'erreur :
- "UNKNOWN: No response from remote host" pou le check load ;
- "Utilisation:check_snmp -H -o [-w warn_range] [-c crit_range]" pour le check memory ;
J'ai aussi un message "check_tcp: Le numéro du port doit être un entier positif" pour les check tcp.
Et ce message "Utilisation: check_ldap -H -b [-p ] [-a ] [-D ]" pour le check ldap.
je pense que tout cela à avoir avec le snmp, mais je ne sait pas trop comment régler le problème. Le service snmp installé sur les serveurs est bien configuré pour recevoir des requêtes du réseaux et reçoit les requettes envoyé par Nagios.
Mais j'ai tous ces messages d'erreurs sur Nagios.
Merci d'avance
P.S.: pouvez-vous me dire ce que représentent les "argument example" dans les lignes de commande. Est-ce que cela à avoir avec les $ARG1$, $ARG2$, ... ?
En terme de check nagios, j'avais créé un module qui check si le démon rsync est activé sur un serveur.
Je me souviens que je faisais le check en 2 étapes.
La première vérifiait que le port était ouvert en TCP et s'il l'était, je lançais une commande rsync erronée sur le serveur pour voir si le démon répondait bien.
J'ai aussi adapté le script check_mail qui récupère le nombre de messages en fil d'attente pour l'adapter à nullmailer.
Mon problème actuel est de lancer une commande lorsqu'un service passe critique et d'en lancer une autre lorsque le service revient à la normale, de sorte à injecter une variable/script pour relancer un service sur la machine dont le service est passé critique.
Je ne sais pas si c'est configurable ? ou si le mieux est de surcharger la commande qui check le service pour y ajouter ce processus supplémentaire.
Existe t il un moyen simple ?
Ou peut être de faire cela via un autre système ?
Regarde du coté du paramètre "Event Handlers" de nagios qui te permets de lancer un shell lors d'un changement d'état d'un service....
bonjour
je souhaite monitorer mon serveur as/400 via nagios.
J'ai récupéré des pluging via http://www.stic-online.de/stic/html/as400en.html
J'obtiens bien qq retour comme le nb de jobs actifs, cpu, mem, Storage
Tout ca marche via java et une connexion distante via telnet
N'etant pas un dev java, je m'oriente vers une auter méthode car je souhaite pouvoir faire la meme chose autrement comme par ex savoir si un job est actif ou pas.
en commande as400 , c'est : WRKACTJOB SBS(R3_01) JOB(SAPOSCOL)
j'ai reusssi à avoir un retour intéressant via rexec :
rexec -l nagios -p nagios ipmonserveur "WRKACTJOB SBS(R3_01) JOB(SAPOSCOL)"
--> Le travail SAPOSCOL Utilisateur QUA01 est *ACTIVE dans R3QUA400/R3_01.
mais je ne sais pas comment récuperer tout ca et l'intégrer dans Nagios.
Quelqu'un peut-il m'aider ?
Arnaud
j'ai trouvé la solution
créer des pluging personnels en dev un bash qui controle le retour de la commande lancée par REXEX
rexec -l nagios -p nagios 172.16.X.X "WRKACTJOB SBS(R3_02) JOB(SAPOSCOL)"
Publier un commentaire
Utiliser
pour lier des documents à vos commentaires.
Pour des discutions techniques, merci d'utiliser le forum.