Blog

Installation de NRPE à partir des sources

Écrit le 08 07 2013 par Kévin MET _

Coucou les amis, aujourd'hui on va se faire un basique mais ça fait jamais trop de mal de revoir les bases. Je vous explique la situation : On a déjà un serveur Nagios opérationnel et on veut y ajouter le support de NRPE. Pour cela, on part du postulat que le serveur nagios a été compilé par nos soins et que l'on va en faire de même pour NRPE.

Fonctionnement de NRPE

Voici en résumé très rapide le fonctionnement de NRPE. Il fonctionne selon un modèle serveur/client, le serveur étant coté nagios et le client coté serveur à monitorer. Il permet l’exécution en local de scripts nagios qui, normalement, ne fonctionne que en local sur votre serveur nagios. Il va donc falloir compiler le serveur et le démon (client). Ensuite on devra faire un peu de conf pour que nagios utilise NRPE mais cela reste assez simple à mettre en place.

Installation du client

On va donc commencer par la compilation coté client. Pour info, je bosse sur des debian wheezy et vous pourriez rencontrer des problèmes de compilation ou de dépendances différents des miens si vous bossez sur d'autres distributions. Pour commencer on va se mettre dans un répertoire de travail, télécharger les sources, les désarchiver puis entrer dans le dossier.


# mkdir /root/install
# cd /root/install
# wget downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fnagios%2Ffiles%2Fnrpe-2.x%2Fnrpe-2.15%2F&ts=1405608858&use_mirror=heanet
# mv nrpe-2.15.tar.gz\?r\=http\:%2F%2Fsourceforge.net%2Fprojects%2Fnagios%2Ffiles%2Fnrpe-2.x%2Fnrpe-2.15%2F nrpe-2.15.tar.gz
# tar xvzf nrpe-2.15.tar.gz 
# cd nrpe-2.15/

Ensuite on va faire un utilisateur nagios qui servira à lancer le démon NRPE.


# useradd -r nagios

On configure, on compile et on installe


# ./configure --prefix=/opt/nrpe-2.15-1 --with-nrpe-user=nagios --with-nrpe-group=nagios --with-ssl-lib=/usr/lib/x86_64-linux-gnu
# make all
# make install

Dans mon cas j'ai installé NRPE dans le dossier /opt/nrpe-2.15-1 mais vous pouvez l'installer ailleurs. Pour plus de simplicité je fais un lien symbolique comme ceci :


# ln -s /opt/nrpe-2.15-1/ /opt/nrpe

On doit ensuite coller le script d'init fourni.


# cp init-script.debian /etc/init.d/nrpe
# chmod  755 /etc/init.d/nrpe

Il faut ajouter les infos LSB suivantes pour pouvoir l'ajouter dans l'init qui va bien :


### BEGIN INIT INFO
# Provides:          nagios-nrpe-plugin
# Required-Start:    $local_fs $remote_fs $syslog $named $network $time
# Required-Stop:     $local_fs $remote_fs $syslog $named $network
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/Stop the Nagios remote plugin execution daemon
### END INIT INFO

Et on peut utiliser insserv pour l'ajouter au démarrage :


# insserv -d nrpe

Installation des Plugins Nagios

Il faut ensuite ajouter les nagios-plugins pour avoir le minimum vital. Là aussi, c'est assez simple. On télécharge le dossier, on détare, on configure, on compile et on installe. Pour le prefix, on fait attention à bien mettre le même que pour NRPE ou le lien symbolique qu'on vient de créer.


# cd /root/install
# wget nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
# tar xvzf nagios-plugins-2.0.3.tar.gz
# cd nagios-plugins-2.0.3/
# ./configure --prefix=/opt/nrpe --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install

Certains de ces plugins auront besoin de dépendances particulières pour fonctionner. On peut commencer par installer la principale dépendance et installer les autres en fonctions des besoins/


# aptitude install libnagios-plugin-perl

Configuration du client

Toutes la configuration du client se fait via le fichier /opt/nrpe/etc/nrpe.cfg qui par défaut n'est pas créé. Nous allons donc créer le dossier etc et y ajouter le fichier de config par défaut.


# cd /root/install/nrpe-2.15/
# mkdir /opt/nrpe/etc
# cp sample-config/nrpe.cfg /opt/nrpe/etc/

Le fichier est très commenté et il est donc facile de savoir ce que vous devez changer. Néanmoins pour que NRPE fonctionne rapidement vous devez simplement modifier les variables suivantes :

  • server_address : Indiquez l’adresse sur laquelle NRPE doit écouter
  • allowed_hosts : Indiquez l’adresse ip ou la plage d'ip sur laquelle se trouve votre serveur Nagios

Enfin, il faut modifier les command mais on verra cela lors de la configuration de Nagios.

Installation du serveur

Pour l'exemple on va partir du principe que Nagios est déjà installé. Qu'il est dans /opt/nagios et qu'il utilise l'utilisateur et le groupe nagios. Cela est important pour les options de compilations. Cette étape ressemble très fortement à l'installtion du client à la différence près que lors du ./configure le prefix n'est pas le même.


# mkdir /root/install
# cd /root/install
# wget downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fnagios%2Ffiles%2Fnrpe-2.x%2Fnrpe-2.15%2F&ts=1405608858&use_mirror=heanet
# mv nrpe-2.15.tar.gz?r=http:%2F%2Fsourceforge.net%2Fprojects%2Fnagios%2Ffiles%2Fnrpe-2.x%2Fnrpe-2.15%2F nrpe-2.15.tar.gz
# tar xvzf nrpe-2.15.tar.gz 
# cd nrpe-2.15/
# ./configure --prefix=/opt/nagios --with-nrpe-user=nagios --with-nrpe-group=nagios --with-ssl-lib=/usr/lib/x86_64-linux-gnu
# make all
# make install

Configuration de Nagios

Si tout c'est bien passé vous devriez avoir un script nommé check_nrpe dans votre répertoire libexec.


# file /opt/nagios/libexec/check_nrpe 
# /opt/nagios/libexec/check_nrpe: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0xaed03134d5006037cafd91e5e0f2a2825e617d49, not stripped

Nous allons donc pouvoir ajouter le service NRPE dans notre configuration Nagios.

Dans cet exemple, nous allons supposer que nous voulons vérifier la quantité de place libre sur la partition racine de notre serveur distant. Nous allons donc utiliser le script check_disk qui ne s'utilise qu'en local. Il faut donc commencer par ajouter une ligne en bas du fichier /opt/nrpe/etc/nrpe.cfg sur notre serveur distant qui servira à faire le test.


command[check_root_disk]=/opt/nrpe/libexec/check_disk -w 20% -c 10% -p /

Le test se nomme donc check_root_disk et cela sera important un peu plus loin.

Il ne faut pas oublier de lancer NRPE sur le serveur distant et d'ouvrir le port 5666 en entrée.


# /etc/init.d/nrpe start

On peut également vérifier que le test fonctionne bien en local avant de passer à la configuration du serveur. Pour cela, on éxécute le test comme le ferais NRPE :


# /opt/nrpe/libexec/check_disk -w 20% -c 10% -p /
DISK OK - free space: / 8085 MB (84% inode=92%);| /=1482MB;8063;9071;0;10079

Le test répond bien, on passe donc à la configuration du serveur. On va commencer par ajouter la commande NRPE dans nagios. On édite donc le fichier /opt/nagios/etc/objects/commands.cfg si on a gardé le noms des fichiers par défaut. On y ajoute le service.


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

C'est très simple, le script check_nrpe prend en argument le hostname et le nom du service que l'on veut checker. Dans notre exemple il s'agit de check_root_disk. Il ne reste donc plus qu'à ajouter ce check dans le fichier de configuration du serveur distant.


define service{
        use                             local-service
        host_name                       test
        service_description             Disk /
        check_command                   check_nrpe!check_root_disk
        }

On vérifie qu'on a pas fait de typo en checkant la config avant de relancer Nagios :


# /opt/nagios/bin/nagios -v /opt/nagios/etc/nagios.cfg

Si tout est OK, on relance Nagios et en avant Guingamp !

♥ Partage sur tes réseaux sociaux ♥
Kévin MET
Kévin MET

Auteur de ce blog et gérant de la société MNT-TECH, je publie sur ce blog lorsque le temps me le permet et lorsqu'un sujet qui me parait intéressant n'a pas encore été abordé en français. Toutes les informations techniques présentes sur cette page peuvent être réutilisées moyennant le fait de citer la source.