NRPE (Nagios Remote Plugin Executor) est à la fois un agent de supervision et un protocole de communication sécurisé (ou non si ssl est désactivé). Il permet l'exécution de sonde (plugin) sur un hôte distant. Cela réduit la charge sur le serveur de supervision car l'exécution de la sonde se réalise sur 'hôte distant. On peut aussi exécuter une sonde sur l'hôte distant pour superviser un hôte distant différent. Cette autre solution peut être intéressante pour des petites infrastructures éloignées et éviter l'installation d'un poller.
Il faut bien comprendre le fonctionnement de l'agent NRPE :
- NRPE installé sur le serveur de supervision fonctionne comme une sonde, envoie les commandes de sonde à exécuter et reçoit les informations en retour.
- NRPE installé sur l'hôte distant fonctionne en daemon et attends les instructions du serveur de supervision, exécute la sonde quand on lui donne l'ordre et renvoie les informations au serveur de supervision.
Le protocole de communication NRPE est le 5666 par défaut.
Nous avons deux installations distinctes à réaliser en fonction du rôle de la machine : supervision ou hôte. L’exemple NRPE 2 a été réalisé avec la version 2.7x tandis que la version NRPE 3 a été réactualisé avec la dernière installation de Centreon 2.8x et les répertoires par défaut de Centreon.
Il existe deux versions de NRPE actuellement : la version 2 et la version 3. Voici les améliorations de la version 3 :
Il faut bien comprendre le fonctionnement de l'agent NRPE :
- NRPE installé sur le serveur de supervision fonctionne comme une sonde, envoie les commandes de sonde à exécuter et reçoit les informations en retour.
- NRPE installé sur l'hôte distant fonctionne en daemon et attends les instructions du serveur de supervision, exécute la sonde quand on lui donne l'ordre et renvoie les informations au serveur de supervision.
Le protocole de communication NRPE est le 5666 par défaut.
Nous avons deux installations distinctes à réaliser en fonction du rôle de la machine : supervision ou hôte. L’exemple NRPE 2 a été réalisé avec la version 2.7x tandis que la version NRPE 3 a été réactualisé avec la dernière installation de Centreon 2.8x et les répertoires par défaut de Centreon.
Il existe deux versions de NRPE actuellement : la version 2 et la version 3. Voici les améliorations de la version 3 :
- Augmentation de la taille du buffer retournant les information à 64 Ko. la version précédente était limité par défaut à 1 Ko mais configurable avec l'option m.
- Amélioration de la sécurité SSL avec un chiffrage à 2048 bits et possibilité d'utiliser des certificats.
1 - Version 3
1.1 Installation du client NRPE 3 sur un central
Nous installerons seulement la sonde (plugin).
1.1a Pré requis
Il faut installer openssl et les librairies de développement openssl si ce n'est pas déjà fait.
apt-get install -y autoconf gcc libc6 libmcrypt-dev make libssl-dev wget
1.1b Installation et compilation
Récupérez les sources NRPE 3 sur le site de Nagios. Décompressez l'archive dans un dossier
cd /tmp wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-3.2.1.tar.gz tar xzf nrpe.tar.gz cd nrpe-nrpe-3.2.1
Par défaut, la configuration se fait avec le "user" nagios et le dossier de destination est /usr/local/nagios/libexec. Dans le cadre de notre maquette, nous utilisons centreon-engine. Le "user"" sera donc centreon-engine et le dossier de destination du plugin sera /usr/lib/nagios/plugins.
./configure --with-nagios-user=centreon-engine --with-nrpe-user=centreon-engine --with-nagios-group=centreon-engine --with-nrpe-group=centreon-engine --libexecdir=/usr/lib/nagios/plugins
La compilation et l'installation de la sonde (plugin) est on ne peut plus simple.
make all make install-plugin
1.2 Vérification du fonctionnement
Pour vérifier le fonctionnement de notre plugin, nous pouvons, par exemple, utilisez un poller Centreon avec NRPE installé en daemon.
/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.133 NRPE v3.2.1
1.3 Utilisation du package Debian
Si vous avez un serveur Debian, vous pouvez installer le client Nrpe 3 avec le paquet livré dans le miroir prévu à cet effet. Pour installez le dépôt, lisez la documentation. Installez le paquet.
apt-get install centreon-nrpe3-plugin
Pour vérifier le fonctionnement de notre plugin, Il faudra lancer la commande suivante :
/usr/lib/centreon/plugins/check_centreon_nrpe3 -H 192.168.0.133 NRPE v3.2.1
1.4 Exemple d'utilisation avec les plugins Centreon
Si vous avez installer le démon nrpe 3 sur Debian comme indiqué dans cet article et les plugins Centreon. Voici un exemple d'utilisation avec la vérification des inodes.
/usr/lib/centreon/plugins/check_centreon_nrpe3 -H 192.168.0.140 -c check_centreon_plugins -a "os::linux::local::plugin" "inodes" "--name /" OK: Inodes partition '/' Used: 4 % | 'used'=4%;;;0;100
2 - Version 2
2.1 Installation de l'agent NRPE sur un central
Nous commencerons par l'installation la plus facile, NRPE installé sur un serveur de supervision. Nous installerons seulement la sonde (plugin).
2.1a Pré requis
Il faut installer openssl et les librairies de développement openssl si ce n'est pas déjà fait.
apt-get install openssl libssl-dev
2.1b 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. Dans le cadre de notre maquette, nous utilisons centreon-engine. Le "user"" sera donc centreon-engine et le dossier de destination du plugin sera /usr/lib/nagios/plugins. De plus, il faudra spécifier l'emplacement de la librairie openssl. version 32 bits.
./configure --with-nagios-user=centreon-engine --with-nrpe-user=centreon-engine --with-nagios-group=centreon-engine --with-nrpe-group=centreon-engine --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/i386-linux-gnu/ --libexecdir=/usr/lib/nagios/plugins
version 64 bits.
./configure --with-nagios-user=centreon-engine --with-nrpe-user=centreon-engine --with-nagios-group=centreon-engine --with-nrpe-group=centreon-engine --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu/ --libexecdir=/usr/lib/nagios/plugins
Voici une commande pour retrouver aisément le chemin de la librairie openssl.
ldd `which openssl` | grep ssl
Pour une architecture 32 bits, nous aurons
ldd `which openssl` | grep ssl
libssl.so.1.0.0 => /usr/lib/i386-linux-gnu/i686/cmov/libssl.so.1.0.0 (0xb771d000)
et pour une architecture 64 bits, nous aurons
ldd `which openssl` | grep ssl
ibssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f6344660000)
Merci à Mr Xhark pour cette astuce :-)
La compilation et l'installation de la sonde (plugin) est on ne peut plus simple.
make all make install-plugin
2.2 Vérification du fonctionnement
Pour vérifier le fonctionnement de notre plugin, nous pouvons, par exemple, utilisez un serveur Windows avec comme agent nsclient++
/usr/local/plugins/libexec/check_nrpe -H 172.16.209.204 I (0,4,1,105 2014-04-28) seem to be doing fine...
Si vous avez déjà installé un agent NSClient++ avec l'option NRPE, vous pouvez vérifiez le bon fonctionnement avec la commande suivante. Sinon, je vous invite à lire l'article sur l'agent NSCLient++.
/usr/local/plugins/libexec/check_nrpe -H 172.16.209.214 -c "alias_cpu" OK CPU Load ok.|'5m'=0%;80;90 '1m'=0%;80;90 '30s'=0%;80;90
Si votre agent NRPE distant n'est pas sécurisé, ce qui n'est pas une bonne solution, vous avez la possibilité de lancer la commande sans cryptage avec l'option n.
/usr/local/plugins/libexec/check_nrpe -H 172.16.209.214 -n -c "alias_cpu" OK CPU Load ok.|'5m'=0%;80;90 '1m'=0%;80;90 '30s'=0%;80;90
2.3 Configuration du plugin dans Centreon
2.3.a La commande check_nrpe
$USER1$/check_nrpe -H $HOSTADDRESS$ -p $_SERVICEPORT$ -c $_SERVICECOMMAND$
La macro $_SERVICEPORT$ étant obligatoire, nous devrons créer un template de base avec le port 5666 par défaut. Si vous ne voulez pas de template de base supprimer le paramètre -p et sa macro associée.
Centreon-Clapi
centreon -u admin -p password -o CMD -a ADD -v 'check_nrpe;check;$USER1$/check_nrpe -H $HOSTADDRESS$ -p $_SERVICEPORT$ -c $_SERVICECOMMAND$’
2.3.b La commande check_nrpe_arg
Si vous voulez rajouter des arguments, il faut ajouter une commande check_nrpe_arg. La macro $_SERVICEOPTION$ vous permettra de rajouter des arguments supplémentaires. Je pensais pouvoir utiliser une seule commande pour check_nrpe. Malheureusement, le fait de ne pas mettre de valeur à la macro $_SERVICEOPTION$ provoque une erreur lors de l'utilisation du plugin.
$USER1$/check_nrpe_arg -H $HOSTADDRESS$ -p $_SERVICEPORT$ -c $_SERVICECOMMAND$ -a $_SERVICEOPTION$
Centreon-Clapi
centreon -u admin -p password -o CMD -a ADD -v 'check_nrpe_arg;check;$USER1$/check_nrpe -H $HOSTADDRESS$ -p $_SERVICEPORT$ -c $_SERVICECOMMAND$ -a $_SERVICEOPTION$’
2.3.c Le template de base pour check_nrpe
Ce template de base nous évite de saisir le numéro de port 5666 par défaut. Il sera possible de le surcharger avec un numéro de port spécifique pour un service particulier. Il est possible de réaliser la même chose pour la commande check_nrpe_arg.
Centreon-Clapi
centreon -u admin -p password -o STPL -a add -v "Modele_NRPE;NRPE;generic-service"
centreon -u admin -p password -o STPL -a setparam -v "Modele_NRPE;check_command;check_nrpe"
centreon -u admin -p password -o STPL -a setmacro -v "Modele_NRPE;PORT;5666"
Pour superviser une machine Windows avec NSClient ++, je vous conseille de lire l'article suivant. Sinon vous pouvez continuer avec le mode démon NRPE.