Menu


Stacks Image 9724
Nous étudierons, dans cet article, l'installation du programme NRPE en mode démon (daemon). je vous propose l'installation avec xinetd, nous verrons les différentes installations : protocole ssl ou non, passage des arguments ou non. L’exemple ci-dessous a été réactualisé avec la dernière installation de Centreon et les répertoires par défaut de CES.
Stacks Image 35946
schéma de principe

1 Installation du daemon NRPE sur un hôte

1.1 Pré requis

Il faut installer le démon XINETD. Celui-ci fonctionne sans problème avec NRPE.nous installerons les librairies de développement openssl si ce n'est pas déjà fait.
apt-get install xinetd openssl libssl-dev
Nous devons créer un utilisateur et son groupe pour NRPE.
groupadd centreon
useradd centreon -g centreon

1.2 Installation et compilation

Récupérez les sources NRPE sur le site de Nagios. Décompressez l'archive dans un dossier.
cd /usr/local/src
wget https://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
tar xzf nrpe-2.15.tar.gz
cd nrpe-2.15
Par défaut, la configuration se fait avec le "user" nagios et le dossier de destination est /usr/local/nagios/libexec. Pour notre serveur hôte, nous utiliserons centreon. Le "user"" sera donc centreon et le dossier de destination des plugins sera /usr/local/nrpe/libexec. De plus, il faudra spécifier l'emplacement de la librairie openssl.
Nous décidons de l'installation dans le dossier suivant /usr/local/nrpe avec l'option suivante --prefix. en version 32 bits.
./configure --with-nagios-user=centreon --with-nrpe-user=centreon --with-nagios-group=centreon --with-nrpe-group=centreon --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/i386-linux-gnu/ --libexecdir=/usr/local/nrpe/libexec --prefix=/usr/local/nrpe
en version 64 bits.
./configure --with-nagios-user=centreon --with-nrpe-user=centreon --with-nagios-group=centreon --with-nrpe-group=centreon --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu/ --libexecdir=/usr/local/nrpe/libexec --prefix=/usr/local/nrpe
Vous devriez obtenir ceci :
.......
*** Configuration summary for nrpe 2.15 09-06-2013 ***:

 General Options:
 -------------------------
 NRPE port:    5666
 NRPE user:    centren
 NRPE group:   centreon
 Nagios user:  centreon
 Nagios group: centreon


Review the options above for accuracy.  If they look okay,
type 'make all' to compile the NRPE daemon and client.
Si vous ne voulez-pas de connexion sécurisée, ce qui est un mauvais choix ;-), vous avez la possibilité de désactiver openssl comme ceci :
./configure --with-nagios-user=centreon --with-nrpe-user=centren --with-nagios-group=centreon --with-nrpe-group=centreon --disable-ssl --libexecdir=/usr/local/nrpe/libexec --prefix=/usr/local/nrpe
Stacks Image 36047
Compilation avec OpenSSL

Voici un exemple d'une préparation de compilation qu'il ne faut pas avoir pour obtenir une connexion sécurisée.

checking for type of socket size... size_t
checking for SSL headers... SSL headers found in /usr
checking for SSL libraries... SSL libraries found in /usr/lib/i386-linux-gnu/

*** Generating DH Parameters for SSL/TLS ***
./configure: line 6703: /usr/bin/openssl: No such file or directory
checking for Kerberos include files... could not find include files
checking for perl... /usr/bin/perl
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating subst
config.status: creating include/config.h


*** Configuration summary for nrpe 2.15 09-06-2013 ***:

General Options:
-------------------------
NRPE port: 5666
NRPE user: centreon
NRPE group: centreon
Nagios user: centreon
Nagios group: centreon


Review the options above for accuracy. If they look okay,
type 'make all' to compile the NRPE daemon and client.

Le résultat indique que le programme ne trouve pas openssl. Une fois openssl installé, vous devriez obtenir ce résultat.
*** Generating DH Parameters for SSL/TLS ***
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
.....................................................................+............+.......+.......+..........+.........
...........................+.............+.............++*++*++*++*++*++*
checking for Kerberos include files... could not find include files
checking for perl... /usr/bin/perl
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating subst
config.status: creating include/config.h
config.status: include/config.h is unchanged


*** Configuration summary for nrpe 2.15 09-06-2013 ***:

General Options:
-------------------------
NRPE port: 5666
NRPE user: centreon
NRPE group: centreon
Nagios user: centreon
Nagios group: centreon


Review the options above for accuracy. If they look okay,
type 'make all' to compile the NRPE daemon and client.

La compilation et l'installation de la sonde (plugin) est "on ne peut plus simple".
make all
make install-daemon
make install-daemon-config
make install-xinetd

2 Configuration du daemon NRPE

Editez le fichier de configuration de xinetd pour ajouter les serveurs autorisés à utiliser le service nrpe.
vi /etc/xinetd.d/nrpe
Modifiez le paramètre only_from, ajoutez l'adresse IP de notre serveur de supervision.
only_from = 127.0.0.1 172.16.209.50
Vérifiez que le port 5666 soit bien identifié dans le fichier /etc/services. Redémarrez le service xinetd
service xinetd restart
Vérifiez le bon fonctionnement du daemon NRPE.
netstat -at | grep nrpe
tcp        0      0 *:nrpe                  *:*                     LISTEN

3 Vérification du fonctionnement

Pour vérifier le fonctionnement de notre plugin, connectez-vous sur le serveur de supervision. Lancez la commande suivante :
/usr/lib/nagios/plugins/check_nrpe -H 172.16.209.230
NRPE v2.15

3 Installation des plugins sur le serveur Hôte

Pour utiliser NRPE, nous devons installer des plugins sur le serveur Hôte que nous devons superviser. Plusieurs possibilités : utilisez les sources et les compiler, utilisez les packages des distributions ou, celle que nous allons choisir, copiez les plugins du serveur de supervision sur le serveur Hôte. Il faudra bien vérifier que la machine cible soit bien compatible par rapport au serveur de supervision. N'oubliez pas les dépendances des librairies notamment PERL. Dans notre article, pas de problème, nous avons une ferme de serveurs Debian identiques :-)
Les plugins seront installés dans le dossier /usr/local/nrpe/libexec et les fichiers temporaires des plugins dans le dossier /var/lib/centreon/centplugins si vous utilisez les plugins Centreon.
mkdir -p /var/lib/centreon/centplugins
chown centreon:centreon /var/lib/centreon/centplugins
Connectez-vous sur le serveur de supervision et copiez le dossier des plugins vers le serveur hôte. L'adresse IP du serveur dans notre exemple est 172.16.209.230.
root@supervision:~# scp -r /usr/lib/nagios/plugins root@172.16.209.230:/usr/local/nrpe
Modifiez le nom du répertoire /usr/local/nrpe/plugins pour le mettre en conformité avec le fichier de configuration /usr/local/nrpe/etc/nrpe.cfg sur le serveur distant.
mv /usr/local/nrpe/plugins /usr/local/nrpe/libexec

4 Test de fonctionnement

Les commandes utilisées par NRPE sont enregistrées dans le fichier de configuration /usr/local/nrpe/etc/nrpe.cfg. Les alias pré-configurés sont :
- check_users : vérification des utilisateurs connectés sur l'hôtes
- check_load : vérification de la charge de l'hôte
- check_hda1 : vérification du disque hda1 ( à configurer par rapport au matériel embarqué)
- check_zombie_procs : vérification du nombre de processus zombie
- check_total_procs : vérification du nombre de processus actifs.
Quatre autres commandes sont commentées, il s'agit de commandes utilisant des arguments. Si vous utilisez cette option, assurez-vous bien d'avoir une connexion TCP cryptée pour des raisons évidentes de sécurité. Nous verrons comment utiliser ces arguments. Pour l'instant, vous pouvez vérifier le fonctionnement du plugin NRPE sur le serveur de supervision.
check_users
root@supervision:~# /usr/local/nrpe/plugins/check_nrpe -H 172.16.209.230 -c check_users
USERS OK - 1 users currently logged in |users=1;5;10;0
check_load
root@supervision:~# /usr/local/nrpe/plugins/check_nrpe -H 172.16.209.230 -c check_load
OK - load average: 0.00, 0.01, 0.05|load1=0.000;15.000;30.000;0; load5=0.010;10.000;25.000;0; load15=0.050;5.000;20.000;0; 
check_zombie_procs
root@supervision:~# /usr/local/nrpe/plugins/check_nrpe -H 172.16.209.230 -c check_zombie_procs
PROCS OK: 0 processes with STATE = Z | procs=0;5;10;0;
check_total_procs
root@supervision:~# /usr/local/nrpe/plugins/check_nrpe -H 172.16.209.230 -c check_total_procs
PROCS OK: 83 processes | procs=83;150;200;0;

5 Configuration dans Centreon

5.1 Les templates de service

La configuration dans Centreon sera très simple. Nous utiliserons le template de base check_nrpe. Ensuite, il reste à réaliser les templates de service pour les commandes précédentes (check_users, check_load, check_zombie_procs, check_toatl_procs) avec la macro personnalisée $_SERVICECOMMAND$. Astuce pour avoir la visualisation des templates de la même catégorie, nommez vos templates par le même préfixe comme ci-dessous : Modele_nrpe_users_linux, Modele_nrpe_load_linux, etc.
Stacks Image 36226
Templates de service
Centreon-Clapi

centreon -u admin -p password -o STPL -a add -v "Modele_nrpe_load_linux;LOAD_linux;Modele_NRPE"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_load_linux;COMMAND;check_load"

centreon -u admin -p password -o STPL -a add -v "Modele_nrpe_procs_linux;PROCS_linux;Modele_NRPE"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_procs_linux;COMMAND;check_total_procs"

centreon -u admin -p password -o STPL -a add -v "Modele_nrpe_zombie_linux;ZOMBIE_linux;Modele_NRPE"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_zombie_linux;COMMAND;check_zombie_procs"

centreon -u admin -p password -o STPL -a add -v "Modele_nrpe_users_linux;USERS_linux;Modele_NRPE"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_users_linux;COMMAND;check_users"

5.2 Le template d'hôte

Ces quatre templates de service seront associés au modèle d'hôte OS-Linux-Nrpe.
Stacks Image 36263
Template d'hôte OS-Linux-Nrpe
Centreon-Clapi

centreon -u admin -p password  -o HTPL -a add -v "OS-Linux-Nrpe;Modele_OS_Linux_Nrpe;;;Central;"
centreon -u admin -p password -o STPL -a addhost -v "Modele_nrpe_users_linux;OS-Linux-Nrpe"
centreon -u admin -p password -o STPL -a addhost -v "Modele_nrpe_load_linux;OS-Linux-Nrpe"
centreon -u admin -p password -o STPL -a addhost -v "Modele_nrpe_zombie_linux;OS-Linux-Nrpe"
centreon -u admin -p password -o STPL -a addhost -v "Modele_nrpe_procs_linux;OS-Linux-Nrpe"
centreon -u admin -p password -o STPL -a addhost -v "Ping-LAN;OS-Linux-Nrpe"

6 Résultats dans l’interface de Centreon

On applique ce template à notre hôte linux. Et voici le résultat :
Stacks Image 36300
Les plugins en mode de fonctionnement

7 Utilisation des arguments avec NRPE

7.1 Compilation du daemon NRPE

Il faut rajouter une option à la compilation pour autoriser les arguments dans les commandes check_nrpe. Cette option se nomme --enable-command-args.
./configure --with-nagios-user=centreon --with-nrpe-user=centreon --with-nagios-group=centreon --with-nrpe-group=centreon --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/i386-linux-gnu/ --libexecdir=/usr/local/nrpe/libexec --prefix=/usr/local/nrpe  --enable-command-args
Ensuite compilez de nouveau et installer NRPE
make all
make install-daemon
Rechargez la configuration de XINETD
service xinetd reload

7.2 Configuration de la configuration sur l'hôte

Nous devons modifier le fichier de configuration de NRPE. Editez le fichier /usr/local/nrpe/etc/nrpe.cfg. Modifier la ligne suivante et décommentez l'alias check_disk
dont_blame_nrpe=1
.......
command[check_disk]=/usr/local/nrpe/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
Nous pouvons vérifier le fonctionnement du daemon NRPE en lançant la commande suivante depuis le serveur de supervision.
/usr/lib/nagios/plugins/check_nrpe -H 172.16.209.230 -c check_disk -a "80 90 /var"
DISK OK - free space: /var 949 MB (74% inode=98%);| /var=320MB;1258;;0;1338
Stacks Image 36417
Aide au debug

Si vous avez le résultat suivant à partir du serveur de supervision.
CHECK_NRPE: Received 0 bytes from daemon.  Check the remote server logs for error messages.

Vérifiez les logs sur le serveur hôte supervisé.
tail /var/log/syslog

Le résultat suivant indique que NRPE n'est pas configuré pour le passage des arguments.
Jul  3 21:40:05 lvsbackup nrpe[9152]: Error: Request contained command arguments, but argument option is not enabled!
Jul 3 21:40:05 lvsbackup nrpe[9152]: Client request was invalid, bailing out...

7.3 Configuration dans Centreon

7.3.a Le template de base pour check_nrpe_arg

Nous utiliserons un template de base pour la commande check_nrpe_arg.
Stacks Image 36446
le template NRPE_ARG
Centreon-Clapi

centreon -u admin -p password -o STPL -a add -v "Modele_NRPE_ARG;NRPE_ARG;generic-service"
centreon -u admin -p password -o STPL -a setparam -v "Modele_NRPE_ARG;check_command;check_nrpe_arg"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_NRPE_ARG;PORT;5666"

7.3.b Les templates de service

Nous devrons créer un template de service pour chaque système de fichiers comme l'exemple ci-dessous. Par contre, il sera basé sur le template Model_NRPE_ARG pour prendre en compte les arguments.
Stacks Image 36459
Templates de service pour l'alias check_disk
Faites de même pour tout les systèmes de fichiers : /, /home, /tmp etc. Il faudra les associer au template d'hôte OS-Linux-Nrpe.
Centreon-Clapi

centreon -u admin -p password -o STPL -a add -v "Modele_nrpe_var_linux;VAR_linux;Modele_NRPE_ARG"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_var_linux;COMMAND;check_disk"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_var_linux;OPTION;90 80 /var"

centreon -u admin -p password -o STPL -a add -v "Modele_nrpe_root_linux;ROOT_linux;Modele_NRPE_ARG"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_root_linux;COMMAND;check_disk"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_root_linux;OPTION;90 80 /"

centreon -u admin -p password -o STPL -a add -v "Modele_nrpe_home_linux;HOME_linux;Modele_NRPE_ARG"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_home_linux;COMMAND;check_disk"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_home_linux;OPTION;90 80 /home"

centreon -u admin -p password -o STPL -a add -v "Modele_nrpe_tmp_linux;TMP_linux;Modele_NRPE_ARG"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_tmp_linux;COMMAND;check_disk"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_nrpe_tmp_linux;OPTION;90 80 /tmp"

7.3.c Vérifications et résultats

On applique de nouveau la configuration à l'hôte et on admire le résultat :-)
Stacks Image 36488
Les plugins avec arguments ont été rajoutés
comments powered by Disqus