De nombreux moyens permettent de superviser une machine linux : on peut vérifier l’ouverture de ports TCP ou UDP pour un service particulier à superviser sur la machine, par exemple si le port 80 ou 443 est ouvert sur la machine alors on peut potentiellement en déduire qu’un serveur web tourne sur la machine mais pas forcément que les sites hébergés par le serveur web sont bien accessible aux clients web. on peut aussi se servir du protocole [SNMP](https://fr.wikipedia.org/wiki/Simple_Network_Management_Protocol#:~:text=Simple%20Network%20Management%20Protocol%20(abrégé,réseaux%20et%20matériels%20à%20distance.) ( Simple Network Management Protocol ) qui utilise les ports 161 et 162 UDP pour recueillir des informations sur la machine à superviser mais dans certaines entreprises ou systèmes d’informations ou la politique de sécurité du SI fait barrage à l’ouverture de ces ports, on peut utiliser des programmes comme NRPE%20distant.) sous Linux ou NSCLIENT++ sous Windows qui, installés sur la machine à superviser vont éxécuter des scripts écrit en Bash, Python, Perl, Batch, powershell, javascript ….. pour recueillir des informations comme l’état du disque dur, l’utilisation de la mémoire RAM, l’état des services … et ensuite les transmettre au serveur de supervision.
Dans ce article, nous allons procéder à l’installation, la configuration et la création de commandes de supervision sur une machine Linux à superviser puis à l’installation, la configuration et l’utilisation du plugin NRPE sur le serveur de supervision qui permet de superviser la machine Linux.
On peut installer NRPE sur la machine linux à superviser de 2 manières : l’installation prépackagé grâce à un gestionnaire de paquet comme apt, yum … ou en téléchargeant le code source du projet puis le décompresser, le compiler et l’installer manuellement. Ici, nous allons nous orienter vers la 2ème option car elle va nous permettre d’activer le support du passage d’arguments pour l’éxécution des commandes depuis le serveur de supervision.
Installation des dépendances
sudo apt install -y autoconf automake gcc libc6 libmcrypt-dev make libssl-dev wget
Téléchargement du code source du projet nrpe3.2.1 dans le répertoire /tmp et décompression du fichier dans le dossier nrpe-nrpe-3.2.1
sudo wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-3.2.1.tar.gz
sudo tar xzf nrpe.tar.gz
Compilation du code source en spécifiant l’argument –enable-command-args qui permet d’activer le passage d’arguments au moment de l’éxécution des commandes depuis le serveur de supervision
cd /tmp/nrpe-nrpe-3.2.1/
./configure --enable-command-args
make all
Création du groupe et de l’utilisateur permettant à NRPE de créer des fichiers et d’éxécuter les scripts sur la machine Linux
sudo make install-groups-users
Installation des fichiers binaries
sudo make install
Installation des fichiers de configuration dont /usr/local/nagios/etc/nrpe.cfg, le fichier de configuration principale du service NRPE
sudo make install-config
Mise à jour du fichier des services /etc/services qui permet de faire le lien entre les noms des services et les numéros de ports associés en ajoutant les lignes suivantes à la fin du fichier /etc/services
# Nagios services
nrpe 5666/tcp

On remarque alors que le service nrpe est associé au port TCP dynamique 5666
Installation des fichiers du service et activation du service nrpe par systemd
sudo make install-init
sudo systemctl enable nrpe.service
Démarrage du service NRPE
sudo systemctl start nrpe.service
Une fois NRPE installé et le service démarré, nous allons télécharger et installer les fichiers de scripts qui vont permettre de recueillir des informations sur l’état de la machine à superviser.
Installation des fichiers de scripts permettant la supervision de la machine linux
Installation des dépendances
sudo apt install -y autoconf automake gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext
Téléchargement et décompression du code source
cd /tmp
sudo wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/archive/release-2.2.1.tar.gz
sudo tar zxf nagios-plugins.tar.gz
Compilation du code source et installation des fichiers de script s
cd /tmp/nagios-plugins-release-2.2.1/
./tools/setup
./configure
make
make install
Les scripts qui permettent de réaliser les tâches de supervision sur la machine se trouvent maintenant dans le dossier /usr/local/nagios/libexec/.

Une fois l’installation de NRPE et des scripts de supervision côté machine linux à superviser terminée, nous allons procéder à sa configuration dans le fichier / usr/local/nagios/etc/nrpe.cfg.La directive allowed_hosts permet d’indiquer les adresses IP des serveurs de supervision autorisés à requêter des informations concernant la machine Linux dans le but de la superviser.

La directive dont_blame_nrpe avec une valeur 1 permet d’autoriser le passage d’arguments pour l’éxécution des commandes depuis le serveur de supervision.

Une fois NRPE configuré sur la machine Linux à superviser, on va procéder à l’installation et à la configuration du client NRPE du côté du serveur de supervision qui va recevoir les informations pour la supervision de la part du serveur NRPE qui est sur la machine Linux.
Installation du client NRPE sur le serveur de supervision Centreon
sudo yum install centreon-nrpe3-plugin

Une fois le client NRPE installé, on remarque qu’un nouveau plugin check_centreon_nrpe3 apparaît dans le répertoire des plugins nagios /usr/lib64/nagios/plugins/.

Maintenant que le serveur NRPE est installé et configuré correctement pour recevoir des ordres de supervision du client NRPE qui est notre serveur Centreon, nous allons procéder à des tests et à la création des commandes de check et des services depuis l’interface web de notre serveur Centreon.
On procède d’abord à des tests depuis la ligne de commande du serveur de supervision Centreon pour tester le bon fonctionnement du daemon NRPE de la machine Linux.
La commande suivante permet de connaître la version du daemon NRPE de notre machine Linux depuis le serveur de supervision Centreon.
./check_centreon_nrpe3 -H <IP_Du_Serveur_NRPE>

On remarque que le retour de cette commande nous indique bien la bonne version du daemon NRPE installé sur notre machine Linux qui fait office de serveur NRPE. On peut donc affirmer que la connectivité entre le serveur et le client NRPE fonctionne correctement.
On peut maintenant essayer de superviser le serveur NRPE en utilisant un des scripts présent dans le répertoire des scripts /usr/local/nagios/libexec/.
la commande suivante nous informe sur la façon dont le plugin check_centreon_nrpe3 doit être utilisé :
./check_centreon_nrpe3 --help
l’option -H est obligatoire et elle nous permet d’indiquer l’adresse IP du serveur NRPE à superviser. Parmis les options optionnels, les options -c et -a seront utilisées pour indiquer la commande à exécuter sur le serveur NRPE et les arguments à passer pour l’exécution du script de la commande.


Dans le fichier de configuration principale du serveur NRPE, on va définir les commandes qui vont servir à exécuter les différents scripts du répertoire /usr/local/nagios/libexec/
Une commande est définie de la sorte :
command[Nom_commande]=/chemin/Script/à/éxécuter $Argument1$ $Argument2$ ....

En exécutant la commande ./nom_script –help en ligne de commande dans le répertoire des scripts /usr/local/nagios/libexec/, nous avons une indication sur la façon dont un script doit être utilisé, comment et quels arguments peut-on lui passer.
Un exemple avec le script check_uptime qui permet de vérifier le temps d’activité d’une machine.

Maintenant que l’on sait comment utiliser ce script, nous allons pouvoir créer une commande qui seras liée à ce script et qui pourrat être éxécuté depuis notre serveur de supervision Centreon.

Une fois la commande créée, un test en ligne de commande depuis le serveur de supervision nous remonte bien les informations sur le uptime de la machine.

On peut maintenant mettre ça en oeuvre depuis l’interface web de centreon
Création de la commande de check NRPE_CHECK_UPTIME

Création du service NRPE_CHECK_UPTIME

Résultats de la supervision sur l’interface web de centreon

Bien évidemment, ceci n’est qu’un petit aperçu de tout ce qui peut être fait avec NRPE. Bon nombre de scripts écrits manuellement dans divers languages peuvent être ajoutés au répertoire des scripts et ainsi servir à superviser le serveur NRPE.