Voici une méthode simple rapide et efficace (enfin plus rapide à mettre en place que NRPE) pour surveiller l’espace disque disponible de ses machines Linux/BSD/Windows à partir de Nagios en utilisant le protocole SNMP.
Les pré-requis sont les suivants:
- avoir un Nagios correctement installé
- la machine à surveiller doit héberger un serveur SNMP dont la configuration permette au serveur Nagios de lire les informations (l’accès read-only v1/v2 de SNMP est suffisant)
- suivre la suite de ce billet
Configuration de la machine à surveiller
Après avoir installé et configuré son serveur SNMP, il faut ajouter la ligne suivante au fichier de configuration snmpd.conf (la localisation de ce dernier est os dépendant):
disk / 100000
PS: le deuxième paramètre permet de fixer le seuil en dessous duquel une alerte SNMP est remontée. Il n’est pas très important pour nous car c’est Nagios qui va générer cette alerte avec nos propres valeurs.
On doit bien sûr relancer le service snmpd pour lire la configuration, par exemple:
/etc/init.d/snmpd restart
Configuration du serveur Nagios
La première chose à faire est de vérifier que l’on arrive bien à récupérer les informations SNMP sur la machine à surveiller (d’adresse IP 192.168.0.200 dans notre exemple). Pour cela on peut utiliser la commande suivante:
snmpget -v 1 -c public 192.168.0.200 .1.3.6.1.4.1.2021.9.1.9.1 UCD-SNMP-MIB::dskPercent.1 = INTEGER: 32
La commande a réussi. On a bien récupéré la valeur 32 par SNMP. Donc On a 32% d’espace disque occupé sur le disque de la machine 192.168.0.200.
On configure Nagios de la manière suivante, on édite le fichier commands.cfg:
################# # check_snmp_disk ################# # Check free disk space using SNMP (add the "disk 1000000" line to the snmpd.conf) define command{ command_name check_snmp_disk command_line $USER1$/check_snmp -H $HOSTADDRESS$ -o .1.3.6.1.4.1.2021.9.1.9.1 -C $ARG1$ -w $ARG2$ -c $ARG3$ -u "% used" }
Puis on configure le service pour la machine à surveiller (dans un autre fichier comme par exemple services.cfg):
define service{ use generic-service host_name Ma_Machine_192.168.0.200 service_description DISK SPACE check_command check_snmp_disk!public!90!95 }
La fonction check_snmp_disk prend 3 paramètres:
- le nom de la communauté SNMP (public)
- le seuil au dessus duquel un warning est généré par Nagios (90%)
- le seuil au dessus duquel un error est généré par Nagios (95%)
Il ne reste plus qu’a relancer Nagios pour prendre en compte la configuration !