Utiliser Munin avec des hôtes SNMP

Date: 31/01/2013 | Catégories: Open-source,Planet-libre,Reseau,Systeme | Tags: ,

Avec le temps, je suis devenu un grand adepte de Munin, le logiciel de supervision permettant de centraliser la gestion des graphes de données RRDTools.

Sa simplicité de prise en main et d'administration y est pour beaucoup. En effet, en une ligne de commande il est possible d'analyser une nouvelle machine à superviser. Munin va s'occuper de générer automatiquement tous les graphes possibles et imaginables. Cette simplicité est notamment dû à l'architecture client/serveur de Munin qui masque en grande parti la complexité des mécanismes de récupération de données à grapher.

Pour superviser un hôte comme des équipements réseaux (routeur Cisco, Switch...) ou des appliances (NAS...) sur lesquels il est impossible d'installer le client Munin, il faut passer par une configuration spécifique au niveau du serveur, utilisant le protocole SNMP, que nous allons détailler dans ce billet.

Comment ça marche ?

Contrairement au fonctionnement nominal de Munin, le serveur ne va pas passer par le client Munin pour récupérer les données mais par un plugin installé directement sur le serveur.

Dans le schéma suivant, honteusement copier/coller du site officiel, le serveur Munin (Dumbledore) va utiliser le le munin-node local pour aller chercher, via SNMP, les informations sur la machine hôte (Netopia).

Munin-SNMP

 

Comment ajouter un hôte SNMP à superviser ?

Avant tout il faut avoir installé le serveur Munin sur une machine GNU/Linux (vous pouvez suivre cet article pour vous aider).

Ensuite, depuis votre serveur, il suffit de saisir la commande suivante pour ajouter l'hôte "netopia". Il faut bien sûr remplace netopia par le nom (FQND) ou l'adresse IP de votre hôte.

Comme vous pouvez le voir, la commande munin-node-configuration avec le tag --snmp  va scanner la MIB SNMP de votre machine hôte et proposer une configuration automatique de tout les plugins (graphes) reconnus dans le répertoire /usr/share/munin/plugins. Vous pouvez ensuite les activer dans votre configuration de Munin en faisant un copier/coller de toutes les lignes ln -s ... ou bien plus simplement en remplaçant la commande précédente par:

Par défaut, munin-node-configuration utilise public comme communauté SNMP, il est possible de la configurer en ajoutant:

La version de SNMP à utiliser peut également être configurée:

Il faut ensuite ajouter les lignes suivantes à votre fichier de configuration du serveur Munin (en laissant bien l'adresse IP 127.0.0.1 !!!):

 Appliquer la nouvelle configuration à votre serveur Munin

Une fois vos différents hôtes ajoutés selon la procédure précédente,  vous devez faire prendre en compte la nouvelle configuration avec la commande:

Les nouveaux graphes devraient apparaître après quelques minutes:

muninsnmp

Dans certains cas, si les graphes n'arrivent pas, il peut être utile de relancer complètement le serveur Munin en saisissant:

Conclusion

Avez vous des avis sur Munin, l'utiliser vous avec un pooling SNMP ?

Des scripts et astuces à partager ?

Source: Site officiel de Munin

  • Nusa

    Bonjour,

    Merci pour ce « viel » outil que j’avais oublié. J’ai installé pour tester par contre j’ai une erreur lorsque je relance munin-update :

    $ /usr/share/munin/munin-update
    2013/02/01 14:52:35 [ERROR] Error occured in under [pf-pep] in the configuration.
    ERROR: Failed to parse config file ‘/etc/munin/munin.conf’: [ERROR] Error occured in under [pf-pep] in the configuration. Please refer to the log if details are missing here.
    at /usr/share/munin/munin-update line 48
    $

    pf-pep étant mon hote supervisé.

    Si je regarde dans /var/log/munin/munin-node.log,j’ai l’erreur suivante :

    root@debian:~# tail /var/log/munin/munin-node.log
    Process Backgrounded
    2013/02/01-14:07:45 Munin::Node::Server (type Net::Server::Fork) starting! pid(24753)
    Binding to TCP port 4949 on host *
    2013/02/01-14:08:16 [24753] Service ‘snmp_pf-pep_df’ timed out.
    2013/02/01-14:08:35 Server closing!
    Process Backgrounded
    2013/02/01-14:09:06 Munin::Node::Server (type Net::Server::Fork) starting! pid(1422)
    Binding to TCP port 4949 on host *
    Setting gid to « 0 0 »
    2013/02/01-14:09:40 [1422] Service ‘snmp_pf-pep_df’ timed out.
    root@debian:~#

    Les graphs de mon serveur munin sont OK.

    Une idée?

    Nusa

    • On dirait que tu as un timeout lors de la requête SNMP.

      Tu as essayé de voir si ton hôte pf-pep répond bien à une requête du type:

      # snmpwalk -v 1 -c public pf-pep

      ?

      • nusa

        ça fonctionne sans problème :

        root@debian:~# snmpwalk -v 1 -c public pf-pep
        iso.3.6.1.2.1.1.1.0 = STRING: « nomhote 4266313884 FreeBSD 8.1-RELEASE-p6 »
        iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.12325.1.1.2.1.1
        iso.3.6.1.2.1.1.3.0 = Timeticks: (12993151) 1 day, 12:05:31.51
        iso.3.6.1.2.1.1.4.0 = «  »
        iso.3.6.1.2.1.1.5.0 = STRING: « nomhote »
        iso.3.6.1.2.1.1.6.0 = «  »
        iso.3.6.1.2.1.1.7.0 = INTEGER: 76
        iso.3.6.1.2.1.1.8.0 = Timeticks: (28) 0:00:00.28
        iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.4.1.12325.1.1.1.10.2
        iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.4.1.12325.1.1.1.10.3
        iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.1
        iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.4.1.12325.1.1
        iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.2.1.31
        iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.2.1.48
        iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.2.1.49
        iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.2.1.50
        iso.3.6.1.2.1.1.9.1.2.9 = OID: iso.3.6.1.2.1.4.24
        iso.3.6.1.2.1.1.9.1.2.10 = OID: iso.3.6.1.4.1.12325.1.2
        iso.3.6.1.2.1.1.9.1.2.11 = OID: iso.3.6.1.2.1.25
        iso.3.6.1.2.1.1.9.1.3.1 = STRING: « udp transport mapping »
        iso.3.6.1.2.1.1.9.1.3.2 = STRING: « lsock transport mapping »
        iso.3.6.1.2.1.1.9.1.3.3 = STRING: « The MIB module for SNMPv2 entities. »
        iso.3.6.1.2.1.1.9.1.3.4 = STRING: « The MIB module for the Begemot SNMPd. »
        iso.3.6.1.2.1.1.9.1.3.5 = STRING: « The MIB module to describe generic objects fo

        nusa

    • Il faudrait regarder ce qu’essaye de récupérer le plugin « snmp_pf-pep_df » (dans /etc/munin/plugins/). Surtout l’OID et voir si tu arrives à l’avoir avec un snmpget…

  • Pingback: Nono’s Vrac 87 – Via Shaarli [suite] « m0le'o'blog()