Vous êtes ici:

Menu


Stacks Image 9724
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 ci-dessous a été réactualisé avec la dernière installation de Centreon et les répertoires par défaut de CES.
Stacks Image 19246
schéma de principe

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).

1.1 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

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. 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/local/plugins/libexec. 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
Stacks Image 19327
Trouver l'emplacement de la librairie openssl
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

1.3 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

1.4 Configuration du plugin dans Centreon

Pour configurer notre sonde (plugin), nous aurons besoin de macros personnalisées.

1.4.a Macros Personnalisées

Stacks Image 19467
création des macros
Centreon-Clapi
Création des macros personnalisées avec mon script que vous trouverez ici.

./create_macrocustom.sh _SERVICECOMMAND 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICEOPTION 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICEPORT 0 Central "Custom Macro"

 

1.4.b La commande check_nrpe

Stacks Image 19497
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$’

1.4.c 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.
Stacks Image 19603
la commande check_nrpe_arg
$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$’

1.4.d Le template de base pour check_nrpe

Stacks Image 19662
le template 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.
comments powered by Disqus
 Vous êtes ici: