NRPE : monitorer des Linux avec Nagios

Après cet article d’introduction à Nagios quand on n’y connait rien 🙂, où je tâche de couvrir les bases + le monitoring de machines Windows, essentiellement, voici maintenant le minimum vital pour monitorer un Linux. Quand je dis Linux, je pense Debian. « What else? » comme dirait l’autre.

On va donc utiliser NRPE, un équivalent Linux (permettez le raccourci) de NSClient++ pour Windows. En gros : un daemon qui permet d’exécuter des commandes à distance, fournissant en standard la surveillance des tailles des partitions, de la charge CPU, du nombre d’utilisateurs, de processus et de zombies. Comme d’habitude, Debian a tout packagé et il n’y a presque rien à faire…

Par la suite, on considère une machine nommée « srvnagios » et des machines srv1 et srv2 à monitorer. La solution de base Nagios fonctionne, comme expliqué dans l’article mentionné plus haut.

Installation et paramétrage minimum

Côté serveur de monitoring

Sur le serveur « srvnagios », on complète l’installation existante de Nagios avec le plugin NRPE. Sur Debian, c’est le paquet « nagios-nrpe-plugin ». Ca s’installe tout seul et la seule chose qu’on en retiendra, c’est la mise à dispo des commandes et fichiers de conf Nafios suivants :

srv_nagios:~# locate check_nrpe
/etc/nagios-plugins/config/check_nrpe.cfg
/usr/lib/nagios/plugins/check_nrpe

Côté serveur à monitorer

Sur les machines à monitorer, on installe le « serveur » NRPE. Sur Debian, c’est le paquet « nagios-nrpe-server ». Par dépendances, ça installera tout un bazar, normal.
Deux choses à noter :

srv̉1:~# dpkg -L nagios-nrpe-server
[...]
/etc/nagios/nrpe.cfg
/etc/nagios/nrpe_local.cfg
[...]
/etc/default/nagios-nrpe-server
[...]

Le 3è fichier permet de désactiver le mode SSL (pourquoi feriez-vous ça ?) ou de changer la priorité (« nice ») du daemon.
Le 1er fichier définit plein de paramètres qu’on va écraser dans « nrpe_local.cfg », partiellement. Il est bon de survoler le fichier /etc/nagios/nrpe.cfg pour y dénicher les paramètres que vous voulez modifier. La bonne pratique semble être de le laisser tel quel et d’écraser les valeurs qui vous concernent dans le fichier nrpe_local.cfg. Ca doit faciliter le boulot lors d’une montée de version. Le 1er fichier « include » le 2ème à la fin.
Le minimum semble être de modifier l’IP autorisée à interroger la machine et d’y mettre l’IP de « srv_nagios » puisque c’est lui qui va appeler des commandes :

srv1:~# cat /etc/nagios/nrpe_local.cfg
allowed_hosts=x.y.z.t

Sans ça, seul localhost est autorisé à interroger le daemon. Utile uniquement lorsque Nagios est sur la même machine pour se monitorer elle-même.

La suite, c’est d’ajouter les commandes que l’on souhaite. Notamment pour la surveillance des partitions de disques. Regardez et comprenez la partie de définition des commandes (statiques ou à variables) dans la fin du fichier nrpe.cfg. Ca explique la syntaxe et le chapitre suivant :

Nouvelles commandes

J’ai choisi de créer en dur des commandes pour interroger les partitions. J’ai tout hard-codé comme un cochon, plutôt que de variabiliser. C’est un choix. Mais avec la syntaxe lourdingue de Nagios, on est plus à quelques copier-coller près.
J’ai donc ajouté dans nrpe_local.cfg – dans le cas d’un serveur avec du RAID logiciel – les commandes suivantes :

command[check_md1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/md1
command[check_md2]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/md2
command[check_md3]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/md3
command[check_md6]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/md6
command[check_md7]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/md7

Dans un cas plus traditionnel, l’équivalent sera des sda1/2/3 ou hda1/2/3.

Enfin, le contrôle du nombre de processus, de la charge etc, est fourni en standard (voir plus bas)

Tests en commande en ligne

Depuis le « srv_nagios », on peut alors – après avoir relancé /etc/init.d/nagios-nrpe-server reload – tester nos commandes et aussi se familiariser avec la syntaxe de « check_nrpe » :

srv_nagios:~# /usr/lib/nagios/plugins/check_nrpe -H srv1 -c check_md1 -p 5666
DISK OK - free space: /boot 170 MB (94% inode=99%);| /boot=9MB;151;170;0;189

Hop, ça marche, on peut définir tout ce qu’il faut dans Nagios.

Intégration dans Nagios

Je passe sur la définition (au sens Nagios) des machines srv1, srv2 etc. Leurs appartenances à des groupes, des templates, des trucs et des bidules de Nagios.
Un exemple simpliste (définition des commandes une à une par partition) est donc une longue série de commandes de ce type à intégrer dans /etc/nagios3/conf.d/ce_que_vous_voulez.cfg :

define service {
        use     generic-service
        host_name       srv1,srv2 # LE TEST S'APPLIQUERA AUX DEUX MACHINES, ELLES ONT TOUTES LES 2 UN /dev/md2
        service_description     NRPE disk md2
        check_command           check_nrpe_1arg!check_md2
}
#[...]
define service {
        use     generic-service
        host_name       srv2 # UNE SEULE MACHINE BENEFICIERA DE CE TEST
        service_description     NRPE disk md7
        check_command           check_nrpe_1arg!check_md7
}

Puis, on déclare des commandes pour la charge, les users etc. Cette fois, j’ai déclaré ces tests communs au groupe de machines « nrpe-servers », dont font partie srv1 et srv2 dans mon cas :

define service{
        use                     generic-service
        hostgroup_name          nrpe-servers
        service_description     NRPE load
        check_command           check_nrpe_1arg!check_load
}
define service{
        use                     generic-service
        hostgroup_name          nrpe-servers
        service_description     NRPE users
        check_command           check_nrpe_1arg!check_users
}
define service{
        use                     generic-service
        hostgroup_name          nrpe-servers
        service_description     NRPE zombie
        check_command           check_nrpe_1arg!check_zombie_procs
}
define service{
        use                     generic-service
        hostgroup_name          nrpe-servers
        service_description     NRPE procs
        check_command           check_nrpe_1arg!check_total_procs
}

A noter, dans /etc/nagios-plugins/config/check_nrpe.cfg sur « srv_nagios », j’ai modifié la commande check_nrpe_1arg en enlevant le paramètre de timeout -t 60. Je ne sais plus s’il y avait une raison valable.
Rechargez Nagios et admirez.

Firewalling

Pour clore tout ça, pensez aux restrictions réseaux. Pour peu qu’il y en ait entre les machines srv_nagios et srv1/2, pensez à ouvrir le port TCP 5666 (si vous ne l’avez pas modifié). Exemple avec shorewall, dans /etc/shorewall/rules, sur la machine monitorée « srv1 » :

ACCEPT net:$mon_srvnagios $FW tcp 5666

Et sur le serveur de supervision « srv_nagios » :

ACCEPT $FW net:$mon_srv1 $FW tcp 5666

Avec les IP de mon_srv1 et mon_srvnagios défini dans /etc/shorewall/params.

Wala, surveillez bien.

One comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.