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
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 }