Superviser l’espace disque avec Nagios via SNMP

Date: 22/01/2010 | Catégories: Nagios,Open-source | Tags: ,,

Disque dur

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):

[shell]
disk / 100000
[/shell]

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:

[shell]
/etc/init.d/snmpd restart
[/shell]

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:

[shell]
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
[/shell]

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:

[shell]
#################
# 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"

}
[/shell]

Puis on configure le service pour la machine à surveiller (dans un autre fichier comme par exemple services.cfg):

[shell]

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
}

[/shell]

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 !

  • Sinon, il y a ce script qui, après se l’être approprié, fait des miracles (et sans toucher à la configuration SNMP) :

    http://nagios.manubulon.com/snmp_storage.html

    Monitoring par partition, de certains types de montages, de la RAM, etc…
    Il est disponible dans le paquet « nagios-snmp-plugins » sous Debian.

  • Divided

    La méthode de Nicolargo à la mano est tout a fait parfaite mais peut être laborieuse si l’on doit paramétrer la vérification de chaque partition sur chaque serveur.

    Je suis personnellement très fan de ce plugin :
    http://exchange.nagios.org/directory/Plugins/Operating-Systems/Windows/check_win_hd/details

    Il « détecte » les différentes partitions et vérifie l’espace disque. 2 seuils disponibles (warning et critique)

  • Divided

    J’ajoute, mais ce n’est pas le sujet de cet article, que j’aime bien récupérer ce genre d’infos par requêtes wmi.

    J’utilise pour cela « nagios-wsc » qui nécessite un serveur proxy-wmi sous Windows qui effectue les requêtes adéquates à la demande du serveur Nagios puis renvoie le résultat

    (le seul défaut est qu’il n’a pas de données de performance dans la réponse pour utiliser ensuite un template pnp4naigos)

  • Raphaël SurcouF

    Tout comme Guillaume, je préfère la méthode standard, avec le plugin check_snmp_storage, car elle s’appuie sur HOST-RESOURCES-MIB, MIB implémentée par de nombreux agents SNMP et pas uniquement Net-SNMP.
    Il est ainsi possible de surveiller les partitions de Windows via son propre agent SNMP.
    En effet, la solution proposée par Nico s’appuie sur UCD-SNMP-MIB et sa table dskTable et n’est donc disponible qu’avec Net-SNMP. Ce dernier présente néanmoins l’avantage d’être multi-platorme et largement porté.

    Sinon, Nico, le seuil défini avec la directive disk ne permet à elle-seule d’émettre une notification SNMP. Si le seuil est dépassé, l’OID dskErrorFlag correspondant se verra affecter la valeur 1. Pour obtenir les notifications, il faut également configurer l’implémentation de DISMAN-EVENT-MIB de Net-SNMP, notamment à l’aide de directives monitor, comme suit :
    monitor -o dskPath -o dskErrorMsg « dskTable » dskErrorFlag != 0
    L’interruption sera donc levée si dskErrorFlag est différent de 0 et les valeurs des OID dskPath, dskErrorMsg seront ajouté au message.

    Et pour répondre à Divided, la directive includeAllDisks permet d’activer tous les disques en une seule fois et, de toutes façons, compte tenu des configurations snmpd fournies par défaut, il faudra de toute manière modifier la configuration de l’agent pour obtenir les informations concernant les partitions, ne serait-ce que les ACL.

  • neeemooo

    ça ne fonctionne pas chez moi pour la snmp. :s

    Je me demande pourquoi?. que ce soit la manip à la main ou avec les fameux plugins.

    ./check_snmp_storage.pl -C public -H -m ^Swap -c 20 -w 10

    ERROR: Description/Type table : No response from remote host «  ».

  • SurcouF

    @neeemooo: as-tu au moins pris soin de modifier la configuration de l’agent SNMP afin de permettre l’accès à tous les OID disponibles ?

  • Dany

    Personnellement je ne comprends pas le df sur le serveur me donne 17 % la requête snmpget me retourne INTEGER: 16

    Est ce qu’il y a quelque chose d’autre à faire ?

  • maha

    bonjour
    je prépare mon projet de fin d’étude qui porte sur nagios/centreon. j’ai des soucies concernant le Protocole SNMP et les deamon NSClient++ et NRPE.
    est ce que les pluguins Check_nt et check_nrpe utlisent le protocole SNMP et NSCLient++ et NRPE sont-ils les agents SNMP installés sur les machines distantes?

  • Pingback: INSTALLATION CENTREON NAGVIS (CES 3.0) | iZen Supervision et Metrologie()