Nagios ne sait que superviser les ressources publiques d'une machine notamment les ports ouverts . NRPE permet de surveiller les ressources locales d'une machine comme par exemple la charge CPU, la place utilisée d'un disque...

Ce billet est directement inspiré de la documentation anglaise officielle qui se trouve sur le site Nagios : PDF NRPE

Il est possible d'utilser la commande check_by_ssh, qui présente l'avantage de ne rien demander comme installation sur le poste distant. Toutefois cette commande est plus gourmande en temps CPU et me donnera l'occasion d'écrire un billet futur.

Il faut installer NRPE sur chaque machine à superviser. Le serveur Nagios via la commande nrpe_check va lancer le démon NRPE sur la machine supervisée et renvoyer les informations au serveur Nagios.

Le schéma ci-dessous montre le principe de NRPE

NRPE.png, juin 2021

La commande check_nrpe lance le dénom NRPE sur la machine distante via xinetd, ce principe permet de ne faire tourner le démon NRPE qu'au moment de la collecte.

Dans l'exemple présenté ici le serveur Nagios aura pour IP 192.168.1.100 et la machine à superviser 192.168.1.101. Il est supossé que le serveur Nagios est correctement installé. Sinon vous voir le billet suivant :

Installation de NRPE sur la machine à superviser

Bien qu'il existe dans chaque distribution des packages prèts à l'emploi, je vais utiliser les codes sources afin d'avoir une version la plus à jour. Il est necessaire de disposer des outils de compilation, sur Debian utiliser la commande suivante :

aptitude install build-essential

Télécharger les archives suivantes :

wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz

Le premier téléchargement concerne les plugins Nagios et le second le démon NRPE. Les archives sont les dernières mise à jour lors de la rédaction du billet.

Décompresser et compiler les plugins Nagios

tar -xvzf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure
make
make install

On retrouve ici le classique triptyque de compilation. l'ensemble des binaires est installé sous /usr/local/nagios. le plus simple est de créer un user nagios sur la machine et de le nommé comme propriétaire de ce répertoire.

adduser nagios
chown -R nagios:nagios /usr/local/nagios

Installer ensuite xinetd

aptitude install xinetd

Pou installer le démon NRPE il faut au préalable installer les librairies SSL

aptitude install libssl-dev

Décompresser l'archive téléchargée précédement, compiler et installer

tar -xvzf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd

Editer le fichier /etc/xinetd.d/nrpe et sur la ligne only_from rajouter l'adresse IP du serveur Nagios. le fichier doit ressembler à ceci :

service nrpe
{
        flags           = REUSE
        socket_type     = stream
        port            = 5666
        wait            = no
        user            = nagios
        group           = nagios
        server          = /usr/local/nagios/bin/nrpe
        server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
        log_on_failure  += USERID
        disable         = no
        only_from       = 127.0.0.1 192.168.1.100
}

Ajouter la ligne suivante à /etc/services

nrpe  5666/tcp  # NRPE

Relancer xinetd

/etc/init.d/xinetd restart

Tester le fonctionnement correct avec la commande netstat

netstat -at | grep nrpe
tcp        0      0 *:nrpe                  *:*                     LISTEN   

Tester ensuite que le démon NRPE répond correctement

/usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.13

La configuration des commandes se fait dans le fichier /usr/local/nagios/etc/nrpe.cfg. Il existe déjà des commandes prédéfinies, la synaxe est très simple. par exemple nous allons demander ldes information sur la partition /var de la maichine qui est montée sur /dev/sda7. Dans le fichier /usr/local/nagios/etc/nrpe.cf rajouter la ligne suivante :

command[check_var]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda7

Configurer NRPE surle serveur Nagios

Il suffit de télécharger l'archive du démaon NRPE, de la compiler et d'installer le plugin.

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
tar -xvzf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin

Tester ensuite le fonctionnement distant

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.101
NRPE v2.13

Tester par exemple la charge globale de la machine supervisée

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.101 -c check_load
OK - Charge moyenne: 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;

Tester la commande check_var créée précédement

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.101 -c check_var
DISK OK - free space: /var 1733 MB (92% inode=98%);| /var=149MB;1586;1784;0;1983

Il suffit de rajouter au fichier /usr/local/nagios/etc/commands.cfg la commande de check_nrpe

define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

La commande check_nrpe s'utilise alors comme tout autre dans le fichier de configuration de la machine sur le serveur Nagios. Exemple d'incorporation de la commande check_var

define service{
  use                             local-service
  host_name                   adi101 -> Il s'agit de la machine supervisée IP 192.168.1.101
  service_description       Partition var
  check_command           check_nrpe!check_var
}