Nagios : supervision d’un pc distant sous Linux

Du côté du pc sous Linux à superviser :

Dans cet exemple, le pc à superviser tourne sous Mandriva en version « free-2010.2-i586 », installation standard, interface graphique KDE, toutes mises à jour effectuées.

On se contentera de superviser, sur ce pc, les mêmes services que ceux déjà supervisés « en local » sur le serveur Nagios : il faut donc installer sur ce pc à superviser le paquet « nagios-plugins».
Le gestionnaire de logiciels de Mandriva indique que, pour cette version de Mandriva, ce paquet est disponible en version 1.4.14, mais il refuse alors de l’installer, ne trouvant pas ce paquet. En fait, pour Mandriva 2010.2, la version du paquet disponible est 1.4.15 et on peut, ici aussi, compiler soi-même les sources : on peut les télécharger, via Firefox par exemple, à  http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz, en demandant à Firefox d’enregistrer ce ficher dans le répertoire /usr/src/linux-2.6.33.5-server-2mnb.

Il faut ensuite compiler et installer les nagios-plugins, comme on l’avait fait auparavant sur le serveur hébergeant Nagios (voir la page « installation » de ce groupe de billets) :
tar xzf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure –with-nagios-user=nagios –with-nagios-group=nagios
make
make install

Les plugins ainsi installés se trouvent dans le répertoire /usr/local/nagios/libexec, comme c’était aussi le cas sur le serveur hébergeant Nagios. Ce sont donc dans le cas présent les mêmes plugins que ceux utilisés pour la supervision, en local, du serveur Nagios par lui-même.

Pour que puissent communiquer entre eux le pc à superviser et le serveur hébergeant Nagios, on a besoin de NRPE, car ces deux machines sont sous Linux.
NRPE (Nagios Remote Plugin Executor) permet d’exécuter à distance sur un pc sous Linux les commandes Nagios. La partie « serveur » de NRPE doit être installée sur le pc à superviser, et elle se chargera de lancer, en local sur ce pc, les plugins concernés. Ce serveur NRPE obéit lui-même aux instructions qu’il reçoit du serveur hébergeant Nagios, où s’exécute check_nrpe, qui transmet les commandes de Nagios. Les résultats des mesures effectuées par les plugins, sur le pc à superviser, sont ensuite retournés à Nagios en utilisant cette communication entre NRPE, sur le pc à superviser, et check_nrpe, sur le serveur hébergeant Nagios.
Ces communications entre check_nrpe (sur le serveur hébergeant Nagios) et NRPE (sur le pc à superviser) utilisent par défaut le port tcp 5666, réglage qui peut être modifié. Une sécurisation de ces communications par SSL est disponible.

Le Centre de Contrôle de Mandriva permet d’installer, si ce n’est déjà fait, le paquet « nrpe » en version 2.12.
Installer NRPE par ce paquet rpm présente l’avantage, sur une compilation à partir des sources, d’avoir aussitôt ensuite le service nrpe géré par ce Centre de Contrôle pour démarrer, ou arrêter ce service.

La configuration de NRPE se trouve dans le fichier /etc/nagios/nrpe.cfg. La partie la plus intéressante de cette configuration est à la fin de ce fichier, où sont indiqués les plugins lancés par NRPE, avec les paramètres de leurs commandes de lancement.

On constate ainsi que l’ensemble de la configuration de la supervision de ce pc distant sous Linux se répartit entre :
- le serveur hébergeant Nagios : horaires de supervision, contacts à avertir éventuellement, gestion générale de l’interface web de Nagios,
- le pc distant à superviser : les plugins utilisés et leurs paramètres de lancement. Il est aussi possible de définir ces paramètres sur le pc hébergeant Nagios et de les transmettre au NRPE tournant sur le pc à superviser.
Cette dernière variante permet de centraliser sur le serveur hébergeant Nagios cette partie du paramétrage de la supervision. L’intérêt peut être d’éviter ainsi un accès physique ou distant sur les pc à superviser, en cas de changement de ces paramètres; mais ça ne permettrait tout de même pas d’ajouter à distance d’autres services à superviser.

Toutefois, le fait qu’on utilise sur ce pc distant :
- une version de NRPE installée par un paquet rpm configuré pour Mandriva,
- des plugins nagios installés par une compilation classique de leurs sources,
pose un problème de configuration à modifier : le fichier /etc/nagios/nrpe.cfg suppose que les plugins Nagios se trouvent dans le répertoire /usr/lib/nagios/plugins/, or ils se trouvent dans /usr/local/nagios/libexec/ : il faut donc corriger les lignes correspondantes dans ce fichier nrpe.cfg.
De plus, l’exemple fourni pour le plugin check_disk suppose que le pc à superviser possède bien un disque en /dev/hda1/, ce qui n’est pas toujours le cas : à vérifier aussi, donc.

Après avoir redémarré le service nrpe par le Centre de Contrôle de Mandriva, on peut alors vérifier le fonctionnement en local de NRPE en utilisant le fait que check_nrpe, qui fait partie du paquet « nagios-plugins », a donc été installé aussi sur ce pc à superviser. En se mettant dans le répertoire /usr/local/nagios/libexec :
- la commande ./check_nrpe -H localhost retourne la version de NRPE : NRPE v2.12, dans le cas présent.
- la commande ./check_nrpe -H localhost -c check_xxx (où check_xxx est un plugin dont la ligne de commande correspondante est correctement écrite dans /etc/nagios.nrpe.cfg) retourne la mesure effectuée par check_xxx.

Pour préparer la supervision à distance de ce pc sous Mandriva, il reste encore à :
- ajouter une entrée pour le port tcp 5666 dans le fichier /etc/services : la commande netstat -at | grep 5666 doit alors retourner tcp 0 0 *:5666 “:” LISTEN, ce qui indique qu’une écoute est en place sur ce port tcp 5666,
- dans le fichier /etc/nagios/nrpe.cfg, ajouter l’adresse ip du serveur hébergeant Nagios dans les « allowed_hosts », où figure déjà, par défaut, l’adresse ip 127.0.0.1 (ce qui explique qu’on pouvait tester NRPE en local) : les adresses ip autorisées sont ajoutées sur la même ligne, séparées par des virgules (attention à ne pas mettre d’espace entre une virgule et une adresse ip).

Du côté du serveur hébergeant Nagios :

- installer le paquet scli : apt-get install scli
- télécharger les sources de nrpe dans le répertoire /usr/src : wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
- décompresser cette archive : tar zxf nrpe-2.12.tar.gz
Compilation de NRPE :
cd nrpe-2.12
./configure –enable-ssl –enable-command-args
make all
make install

On peut alors tester la communication avec le pc distant à superviser.
Dans le répertoire /usr/local/nagios/libexec/ du serveur hébergeant Nagios, la commande ./check_nrpe – H x.x.x.x -c check_xxx retourne, sur le pc hébergeant Nagios, la mesure effectuée par ce plugin distant, où :
- x.x.x.x est l’adresse ip du pc distant à superviser,
- check_xxx est un plugin, sur le pc distant à superviser, dont la ligne de commande correspondante (dans le fichier /etc/nagios/nrpe.cfg de ce pc distant à superviser) est correctement écrite.

Il faut ensuite compléter la configuration de Nagios, sur le serveur qui l’héberge.
Le fichier /usr/local/nagios/etc/nagios.cfg contient une section « OBJECT CONFIGURATION FILE(S) » à partir de sa ligne 23. Cette section permet d’inclure dans la configuration de Nagios divers systèmes à superviser, dont les fichiers de configuration particuliers se trouvent en principe dans le répertoire /usr/local/nagios/etc/objects/ (voir la page précédente de ce groupe de billets).

Pour superviser à distance le pc sous Mandriva équipé de NRPE, il faut créer un fichier de configuration, par exemple linux_distant.cfg, qu’on peut placer dans le répertoire /usr/local/nagios/etc/objects/, et qui sera pris en compte par Nagios en ajoutant, dans le fichier /usr/local/nagios/etc/nagios.cfg, dans sa section « Object Configuration File(s) », la ligne : « cfg_file=/usr/local/nagios/etc/objects/linux_distant.cfg ».
Ce fichier linux_distant.cfg pourrait par exemple ressembler à ce qui suit :

# Definition du pc distant sous Linux
define host {
use            linux-server
host_name      pc Mandriva
alias          pc Mandriva
address        x.x.x.x
}

# Definition des Services :

# verification du Disque
define service {
use                    generic_service
host_name              pc Mandriva
service_description    Disque
check_command          check_nrpe ! check_disk
}

Pensez à attribuer à ce nouveau fichier le même propriétaire et les mêmes droits que ceux déjà en place pour les autres fichiers *.cfg du même répertoire.

La configuration ci-dessus utilise :
- deux templates déjà définis et utilisés dans la configuration de localhost : « linux-server » et « generic_service »,
- un template qu’on peut ajouter au fichier /usr/local/nagios/etc/objects/commands.cfg, en le construisant de façon suffisamment générique pour qu’il puisse effectivement servir de modèle :
# Définition de check_nrpe
define command {
command_name        check_nrpe
command_line        /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Cette exemple simple de définition utilise les variables :
- $HOSTADRESSE$, qui contient alors l’adresse ip définie dans le « define_host » du fichier de configuration de ce pc distant (fichier linux_distant.cfg, dans le cas présent),
- $ARG1$, qui contient le nom du plugin à exécuter sur le pc distant, nom passé en paramètre à la commande check_nrpe, dans le « define_service » de ce même fichier de configuration. Si on avait utilisé, sur le pc distant à superviser, la méthode qui permet à ce plugin de recevoir ses paramètres d’exécution de Nagios, cette ligne « check_command  check-nrpe ! check_disk » contiendrait ces paramètres, sous la forme « check_command  check_nrpe ! check_disk ! param1 ! param2 ! param2 ! etc. ».

 

Nagios : installation
Nagios : configuration de la supervision
Nagios : supervision d’un pc distant sous Linux
Nagios : supervision d’un pc distant sous Windows