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 3.4.6
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 ci-dessous a été réactualisé avec la dernière installation de Centreon 3.4.6
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
Nous commencerons par l'installation la plus facile, le démon NRPE étant installé sur un serveur poller. Nous installerons seulement le client NRPE sur le Central.
yum install centreon-nrpe3-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/centreon/plugins/check_centreon_nrpe3 -H 192.168.0.133 NRPE v3.2.0
Un autre exemple, utilisez un serveur Windows avec comme agent nsclient++
/usr/lib/centreon/plugins/check_centreon_nrpe3 -H 192.168.0.175 I (0.5.1.46 2017-09-24) seem to be doing fine...
-
Problème avec la taille du buffer (payload length)
- Attention, si vous aviez une configuration avec l'option payload length = 8192, vous recevrez le message suivant :
/usr/lib/centreon/plugins/check_centreon_nrpe3 -H 192.168.0.175
CHECK_NRPE STATE CRITICAL: Socket timeout after 10 seconds.
Vous devrez utilisez la commande suivante :/usr/lib/centreon/plugins/check_centreon_nrpe3 -2 -P 8192 -H 192.168.0.175
I (0.5.1.46 2017-09-24) seem to be doing fine...
1.3 Configuration du plugin dans Centreon
Nous utiliserons les plugins Centreon pour réaliser notre supervision et nous baserons sur les bonnes pratiques de Centreon (command -> template de service -> template d'hôte). Le plugin pack base-generic doit être installé. le serveur cible sera équipé d'un démon nrpe avec les plugins Centreon. Nous verrons l'installation dans l'article suivant.Pour configurer notre sonde (plugin), nous aurons besoin d'une commande. Sélectionnez Configuration -> Commands -> Checks
$CENTREONPLUGINS$/check_centreon_nrpe3 -H $HOSTADDRESS$ -p $_HOSTNRPEPORT$ -c $_SERVICECOMMAND$ -a '$_SERVICEPLUGINS$' '$_SERVICEMODE$' '--warning=$_SERVICEWARNING$ --critical=$_SERVICECRITICAL$'
Notez la macro d'hôte $_HOSTNRPEPORT$ c'est le port utilisé par nrpe, elle ne sera renseignée seulement à la création de l'hôte.
1.3b Le template de service pour vérifier le cpu
Nous utiliserons la commande pour créer un template de service. La bonne pratique est de créer un template par type de vérification (Cpu, Mémoire, swap, etc). Pour l'exemple, nous créons un template de service pour le Cpu.
Le template sera basé sur le template generic-active-service-custom des plugins pack. La valeur de la macro COMMAND sera expliquée dans le prochain article. Nous utiliserons le plugin os::linux::local::plugin et le mode cpu.
1.3c Le template d'hôte pour superviser un hôte avec NRPE3
Nous pouvons maintenant créer notre template d'hôtes qui servira aux machines Linux équipées du démon Nrpe. Il sera basé sur le template d'hôte generis-active-host-custom. Celui-ci ajoutera automatiquement un service ping lors de la création d'un hôte.
Dans l'onglet relation de notre template d'hôte, réalisons une relation avec notre template de service précédent. Vous pouvez ajoutez autant de templates que vous avez besoin.
1.3d Configuration d'un hôte
Nous arrivons à la création de l'hôte. Ajoutons notre hôte test-nrpe3 et le template d'hôte OS-Linux-NRPE3. Nous devrons renseigner la macro NRPEPORT, par défaut nous indiquerons 5666.
Après la sauvegarde de notre hôte, nous pouvons vérifier la création des services de notre hôte.
1.3e Exemple de supervision de l'hôte
Après application de la configuration, notre hôte est supervisé.
Pour l'installation du démon NRPE3, vous pouvez continuer avec l'article suivant DAEMON NRPE CENTREON
2 - Version 2
2.1 Installation de l'agent NRPE sur un central
Nous commencerons par l'installation la plus facile, le démon NRPE étant installé sur un serveur poller. Nous installerons seulement le client NRPE sur le Central.
yum install centreon-nrpe-plugin
2.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_centreon_nrpe -H 172.16.209.233 NRPE v2.15
Un autre exemple, utilisez un serveur Windows avec comme agent nsclient++
/usr/lib/nagios/plugins/check_centreon_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_centreon_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_centreon_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
Pour configurer notre sonde (plugin), nous aurons besoin d'une commande.
2.3a La commande check_nrpe
$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -p $_SERVICEPORT$ -c $_SERVICECOMMAND$ -a ""$_SERVICEARGUMENT$""
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. La macro $_SERVICEARGUMENT$ est protégé par 2 double-quotes. Pour utiliser cette commande de vérification sans utiliser les arguments -a, nous devrons absolument mettre une valeur non significative sinon le moteur de supervision nous retournera une erreur.
Centreon-Clapi
centreon -u admin -p password -o CMD -a ADD -v 'check_nrpe;check;$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -p $_SERVICEPORT$ -c $_SERVICECOMMAND$ -a ""$_SERVICEARGUMENT$""'
2.3b 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.
Centreon-Clapi
centreon -u admin -p password -o STPL -a add -v "Modele_NRPE;NRPE;generic-active-service-custom"
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.