NAGIOS – controle d’un hôte avec SNMP

Contrôle d’un hôte avec SNMP

Nagios utilise aussi le protocole SNMP pour contrôler les hôtes connectés sur le réseau. Nagios opère comme un gestionnaire SNMP en interrogeant les agents SNMP sur des informations précises. Nagios utilise le plugin check_snmp pour envoyer les requêtes SNMP vers la machine supervisée. Ce plugin utilise les deux commandes de Net-SNMP snmpget et snmpgetnext, et il ne fonctionne pas sans ces commandes. L’exemple suivant montre comment le plugin check_snmp peut être utilisé pour contrôler le nombre d’interfaces réseau sur un serveur Linux.

./check_snmp -H 192.168.0.120 -C Nagios!@comm -o  IF-MIB::ifNumber.0 
 
SNMP OK - 2.00 | IF-MIB::ifNumber.0 =2.00

D’une manière générale, la syntaxe de la commande check_snmp est la suivante :

check_snmp -H <Address-IP> -o <OID> [-p port]  [-P protocol]    
           [-C community]    [-w warnning]    [-c critical]  [-s string] 
           [-r regex] [-R regexi] [-l label] [-u units]  [-d delimiter] 
           [-D output- delimiter] [-t timeout] [-e retries]  [-m miblist] 
           [-L seclevel] [-U secname] [-a authproto]  
           [-A authpasswd] [-X privpasswd]

Voyons la signification de chaque option disponible avec le plugin check_snmp :

  • -H, –hostname : cette option spécifie l’adresse IP ou nom DNS de la machine à superviser.

  • -o, –oid : cette option spécifie OID à interroger. Un OID peut être spécifié soit sous forme de nombres séparés par des points ou comme un nom, plusieurs OID peuvent être spécifiés et doivent être séparés par des virgules ou des espaces.

  • -p, –port : cette option spécifie le numéro de port utilisé par SNMP. La valeur par défaut est 161.

  • -P, –protocol : cette option spécifie la version du protocole SNMP utilisée (1, 2c, 3).

  • -C, –community : cette option spécifie le nom de communauté SNMP. La valeur par défaut est public.

  • -w, –warning : cette option spécifie l’intervalle de valeurs min:max en dehors duquel un état d’avertissement doit être retourné.

  • -c, –critical : cette option spécifie l’intervalle de valeurs min:max en dehors duquel un état critique doit être retourné.

  • -s, –string : la commande renvoie un état OK si la valeur spécifiée avec cette option est strictement égale au résultat retourné.

  • -r, –ereg : la commande renvoie un état OK si l’expression régulière sensible à la casse spécifiée avec cette option concorde avec le résultat retourné.

  • -R, –eregi : la commande renvoie un état OK si l’expression régulière insensible à la casse spécifiée avec cette option concorde avec le résultat retourné.

  • -t, –timeout : cette option spécifie la période de temps en secondes avant de terminer la connexion. La valeur par défaut est 10.

  • -l, –label : cette option spécifie un préfixe au message retourné par la commande.

  • -D, –output-delimiter : Cette option sépare le résultat retourné pour des requêtes multiples OID.

  • -u, –units : cette option spécifie une unité de mesure à la valeur retournée. Par exemple,  « % » pour les pourcentages.

  • -e, –retries : cette option spécifie le nombre de tentatives qui doit être effectuée si aucune réponse n’est reçue.

  • -m, –miblist : cette option spécifie la liste des MIB à charger. Par défaut, toutes les MIB sont chargées.

  • -U, –secname : cette option spécifie le nom d’utilisateur à utiliser avec SNMPv3.

  • -A, –authpassword : cette option spécifie le mot de passe à utiliser avec SNMPv3.

  • -X, –privpasswd : cette option spécifie le mot de passe privé à utiliser avec SNMPv3.

L’exemple ci-dessous présente une commande check_snmp pour contrôler le nombre d’utilisateurs connectés sur le serveur.

./check_snmp 192.168.0.120 -C Nagios!@comm -P 2c -w 0:5 -c 0:10 -o 
HOST-RESOURCES-MIB::hrSystemNumUsers.0  -l "Utilisateurs Connectés:" 
Utilisateurs Connectés: OK - 2 | HOST-RESOURCES -MIB::hrSystemNumUsers.0=2

Les arguments passés dans cette commande sont l’adresse IP de l’hôte interrogé, la communauté, la version du protocole, les seuils d’avertissements et critiques, OID et un préfixe pour bien présenter l’information reçue.

Maintenant après avoir configuré l’agent SNMP et compris le fonctionnement du plugin check_snmp, il reste à définir une commande Nagios dans le fichier commands.cfg qui fait appel à ce plugin.

Ce qui suit est une commande générique utilisée pour interroger en SNMP.

define command{ 
   command_name        check_snmp 
   command_line        $USER1$/check_snmp -H $HOSTADDRESS$ -P $ARG1$ 
-o $ARG2$ $ARG3$ -l $ARG3$ 
}

Ensuite, nous pouvons définir un ou plusieurs services en utilisant cette commande. Par exemple, les services suivants pour contrôler respectivement le nombre de processus exécutés, les utilisateurs connectés et la charge du système.

Service permet de surveiller le nombre de processus exécutés :

define service { 
   use                       generic-service 
   host_name                 srv-linux 
   service_description       Processes 
   check_command             check_snmp!HOST 
-RESOURCESMIB::hrSystemProcesses.0!-w 0:250 -c 0:500! 
} 

Service permet de surveiller le nombre d’utilisateurs connectés :

define service { 
   use                       generic-service 
   host_name                 srv-linux 
   service_description       Utilisateur Connecté 
   check_command             check_snmp!HOST-RESOURCES- 
MIB::hrSystemNumUsers.0!-w 0:5 -c 0:10! 
} 

Service permet de surveiller la charge de système :

define service { 
   use                   generic-service 
   host_name             srv-linux  
   service_description   CPU Load 
   check_command         check_snmp!UCD-SNMP-MIB::laLoad.1!-w 0:5 -c 0:10! 
}