Installation et configuration de Munin, le maître des graphes

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

Munin est un logiciel de supervision permettant de centraliser la gestion des graphes de données RRDTools. Il permet en quelques commandes que nous allons détailler dans ce billet de générer des graphes complexes pour surveiller vous machines et les processus qui tournent dessus.

Voici un exemple de graphe sur les statistiques remontées par un serveur utilisant Varnish:

Introduction

Munin est proposé sous la forme de deux packages complémentaires: munin et munin-node.

Le premier (munin) est à installer sur votre serveur de supervision (appelé maître). Son objectif principal est de récupérer les données venant des machines à surveiller puis de générer des graphes qui seront présentés aux utilisateurs via une interface Web.

Le second  (munin-node) est à installer sur toutes les machines à superviser (appelées noeuds). Son objectif est de collecter les informations systèmes en utilisant des plugins (présent dans le package munin-node et dans munin-plugins-extra).

La communication entre le serveur maître et les machines noeuds utilise, par défaut le protocole TCP/4949 (initialisation de la connexion TCP de la part du serveur maître).

Installation de Munin

Pour la suite de ce billet (et sauf mention spécifique), je partirai sur le principe ou vous utilisez des machines sous Debian/Ubuntu.

Installation de Munin sur le serveur maître

Le serveur maître doit disposer d'un serveur Web (voir ce billet pour installer simplement NGinx sur votre système) configuré avec le répertoire root par défaut: /var/www.

Comme Munin est présent dans les dépôts officiels, il suffit de saisir la commande suivant qui va installer le package maître ainsi que le package esclave histoire de pouvoir superviser son serveur de supervision...:

En faisant pointer un navigateur Web vers l'URL:

http://votreserveurdesupervision/munin

Vous devriez voir s'afficher les statistiques de votre serveur. Il faut attendre quelques minutes avant de voir les premiers graphes, le temps que les bases de données soient renseignées.

Installation de Munin sur les machines noeuds

Installation des noeuds sous GNU/Linux

Là encore c'est assez simple:

La configuration de Muni sur les machines noeuds est centralisée dans le fichier /etc/munin/munin-node.conf. Il faut éditer ce fichier pour y configurer l'adresse IP de votre serveur maître à la ligne suivante:

Cette configuration (à adapter à votre besoin) va autoriser la machine maître d'adresse IP 192.168.1.200 à se connecter sur cette machine noeud pour y récupérer les données à superviser.

Il faut ensuite relancer le service Munin-node pour faire prendre en compte la nouvelle configuration:

Installation des noeuds sous Windows

Le projet Munin ne fourni pas de "node" pour WIndows, il faut donc se retourner du coté de la communauté pour trouver notre bonheur. En l’occurrence du coté du logiciel Munin-Node-Win32 disponible au téléchargement sur cette page.  Il suffit de lancer l'installer pour que l'installation et le lancement du processus en tache de fond soit effectué (procédure testé sous Windows 7).

Installation des noeuds sous MacOS

Si vous avez à surveiller des machines sous Mac OS X, il va falloir mettre un peu plus les mains dans le cambouis. En effet, il faut obligatoire passer par l'installation des gestionnaires de paquets Fink ou MacPorts. Je vous conseille la lecture du Wiki officiel.

Configuration des plugins sur les machines noeuds

Nous allons voir dans cette sections comment configurer ce que l'on souhaite superviser sur les machines noeuds. Munin utilise le fichier  /etc/munin/plugin-conf.d/munin-node (ainsi que tous les fichiers se trouvant dans le même répertoire) pour configurer les paramètres des plugins (bien souvent de simples script Perl).

Le répertoire /etc/munin/plugins/ contient la liste des plugins utilisables par la machine noeud et le répertoire /usr/share/munin/plugins/ l'ensemble des plugins. En y regardant de plus prêt, le répertoire  /etc/munin/plugins/ fait des liens symboliques vers le répertoire /usr/share/munin/plugins/.

Pour voir la liste des plugins disponibles sur le noeud, on peut utiliser:

Exemple de l'ajout des plugins NGinx (permettant de surveiller un serveur Web NGinx) sur un noeud:

Pour faire prendre en compte un nouveau plugin sur un noeud (node) il faut faire un lien symbolique entre le fichier en question dans ce répertoire et /etc/munin/plugins/. Par exemple pour accéder aux stats de mon serveur NGinx:

Il est quelquefois necessaire d'installer des dependances pour que le plugin fonctionne.

Pour voir les dépendances nécessaire il suffit de saisir la commande:

Il faut donc installer la librairie perl contenant le module LWP qui est présente dans le package libwww-perl sur Debian/Ubuntu:

Cela a l'air OK:

On peut faire prendre en compte la configuration par Munin-node:

Configuration du maître pour prendre en compte les machines noeuds

Une fois toutes vos machines noeuds configurés (voir le chapitre précédant), il faut maintenant modifier la configuration du serveur maître pour les prendre en compte. Là encore, fidèle à la philosophie Unix, la configuration est centralisé dans le fichier /etc/munin/munin.conf.

En plus des répertoires systèmes en début de fichier:

Il faut configurer la liste des noeuds de la manière suivante:

Reste à relancer le serveur Munin pour prendre en compte la configuration:

En faisant pointer un navigateur Web vers l'URL:

http://votreserveurdesupervision/munin

Puis par exemple les graphes sur l'occupation mémoire:

Pour voir une démonstration en ligne des capacités de Munin, vous pouvez consulter ce serveur maître qui est en accès libre.

Plus de plugins ?

Un des gros avantage de Munin est le fait de pouvoir simplement écrire de nouveaux plugins en utilisant votre langage favori (nous reviendrons bientôt sur ce sujet dans un prochain billet).  Pas mal d'exemples sont proposés  dans le dépôt GitHub suivant (vous devriez trouver votre bonheur).
  • Pingback: Installation et configuration de Munin, le maître des graphes | evalentin | Scoop.it()

  • pofpof

    Munin,
    c’est effectivement vraiment très bon pour superviser
    (les graphs MySQL bien pratiques aussi).

  • http://www.woueb.net Romain

    Moi je suis un assez gros fan de Cacti, donc j’ai jamais vraiment testé Munin.

    Il y a des (gros) avantages par rapport à Cacti (à part l’installation qui a l’air plus simple) ?

  • Seb176

    Bonjour,

    J’ai exactement la même question que Romain (message juste au-dessus).
    Je suis aussi un adepte de Cacti. Quels sont aussi les avantages/inconvénients?

    Merci pour ce billet en tout cas!

  • http://www.nicolargo.com NicoLargo

    Bien que la finalité soit la même (maintenir des graphes sur des statistiques système), je pense qu’il est difficile de comparer Cacti et Munin.

    Pour moi l’interface d’administration (le backend) de Cacti est bien adapté à une utilisation en “équipe” ou les personnes peuvent changer et doivent se former rapidement. C’est donc une solution qui est plus “entreprise” que Munin.

    D’un autre coté, Munin est beaucoup plus facile à mettre en place et plus flexible avec sont système de plugins au niveau des noeuds qui n’est pas sans rappeler Nagios.

    En écrivant cette réponse on peut dire que Munin est à Nagios ce que Cacti est à Centreon…

  • JM

    Bonjour,

    Vu que vous faites la comparaison entre Munin et Cacti, qu’en est-il de collectd? Personne ne l’utilise?

    • http://www.nicolargo.com NicoLargo

      Je dois avouer que je ne connais pas… Cela à l’air intéressant sur le papier.

      Vous l’utilisez ?

    • rafa

      Si moi, enfin nous… :)
      Collectd, je l’utilise depuis maintenant plus d’un an. Avant je ne travaillais qu’avec Munin et j’adorais.
      Au niveau tenue de charge, rien à voir, collectd tient diaboliquement la charge, il est taillé pour cela. Il est extrèmement bien pensé.

      Le concept dans collectd est que collectd est un collecteur, le reste n’est qu’interfacage. Par exemple tu peux utiliser RRD (tout comme Munin) mais rien ne t’empêche de travailler avec MySQL en backend, ou encore fichier CSV, redis, etc.

      En ce qui concerne les plugins, ça peut être aussi simple qu’avec Munin mais pas optimum pour les performances (quoique déjà beaucoup mieux que Munin de facto). J’ai transformé tous mes scripts munin en 10 minutes.

      Et il y a tellement d’autres choses…
      Bref, essayez collectd, ça pourrait vous plaire.

  • aucune importance

    Au fur et à mesure des mises à jour, de temps en temps :
    munin-node-configure –suggest –shell

    avec un | bash en bout de ligne, la conf est mise à jour. Relancer.

    Munin est très bien mais attention, très délicat au cours du temps (sensible à la bonne stabilité de la machine, aux mise à jour des libs perl, des outils auxiliaires etc)

  • julien

    Munin a l’avantage d’être simple à mettre en place. J’en profite pour demander si quelqu’une déjà utilisé observium, c’est plus orienté réseau, mais ça a l’air prometteur aussi.

  • http://blog.crifo.org/ Dju

    Grand fan de munin aussi, pour sa souplesse, et la facilité d’écrire de nouveaux plugins dans son langage favori. deja une dizaine écrits et publiés :)
    Par contre, il ne faudrait pas oublier qu’en plus de collecter des données et de les grapher, le serveur munin est également capable d’envoyer des mails (ou d’executer une commande) en cas de dépassement de valeurs (par exemple, la température d’un disque dur en train de cramer), ou si un noeud ne répond pas.
    On peut meme se faire des groupes avec des contacts différents.
    Et la, c’est royal :)

  • Al_

    Moi j’aime bien munin aussi
    le seul reproche c’est ses plugins pour icecast…
    aucun ne marche :(

  • Bilbon

    Salut et merci pour ce tuto

    j’ai suivi ton tuto sur nginx, mais quand je veux tester http://@server/ ca me mets 403 Forbidden et pareil avec http://@server/munin

    Une idée ??

    • Nico

      Il faut une page d’index avec les bons droits sous /var/www lorsque tu testes http://@server/

      ET pour http://@server/munin c’est pareil.

      Il faut les droits d’exécution sur les fichiers dans /var/cache/munin/www.
      Pour cela tape la commande :
      $chmod -R 755 /var/cache/munin/www. Et normalement se sera good !

  • http://l-homme.com rangzen

    Super tuto.
    Pour le service (init.d), apparemment maintenant c’est plutôt par service :
    service munin-node restart

  • http://twitter.com/XavierDavGarcia Xavier David Garcia

    Connais tu http://www.observium.org/ , je l’utilise depuis 1 ans il est vraiment fantastique et très facile a mettre en oeuvre.

  • François

    Quelqu’un peut m’expliquer pourquoi j’ai une erreur 403 Forbiden?
    Log Apache:
    [Wed Jun 13 14:46:00 2012] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico

    Pour info, j’ai parcouru tous les tutos possibles du web, sans succès……

    • http://www.gtcom.fr thierry

      Nico, je rebondis sur ton dernier post (le choix des réseaux …. ) et comme déjà signalé, une fois Munin installé, le répertoire (http://votreserveurdesupervision/munin) n’est pas accessible pour des raisons de droit (je suis sur serveur ubuntu). J’ai essayé de changer le propriétaire du dossier (/var/cache/munin…) mais rien n’y fait !!!!

      Si effectivement quelqu’un a une solution …

      merci …

      • http://www.nicolargo.com nicolargo

        Peux tu nous envoyer le résultat des commandes:

        $ ls -alF /var/www
        $ ls -alF /var/cache/munin
        et
        $ ls -alF /var/cache/munin/www/

        • thierry

          Voici …

          ls -alF /var/www
          =>
          drwxr-xr-x 25 root root 4096 nov. 28 11:43 ./
          drwxr-xr-x 13 root root 4096 nov. 27 00:56 ../
          lrwxrwxrwx 1 root root 20 nov. 28 11:43 munin -> /var/cache/munin/www/

          ls -alF /var/cache/munin
          =>
          drwxr-xr-x 3 root root 4096 nov. 28 11:38 ./
          drwxr-xr-x 15 root root 4096 nov. 28 11:38 ../
          drwxr-xr-x 3 munin munin 4096 nov. 28 11:40 www/

          ls -alF /var/cache/munin/www/
          =>
          drwxr-xr-x 3 munin munin 4096 nov. 28 11:40 ./
          drwxr-xr-x 3 root root 4096 nov. 28 11:38 ../
          -rw-r–r– 1 munin munin 2555 nov. 28 11:40 definitions.html
          -rw-r–r– 1 munin munin 2046 nov. 28 11:40 favicon.ico
          -rw-rw-r– 1 munin munin 2399 nov. 28 13:10 index.html
          drwxrwxr-x 3 munin munin 4096 nov. 28 11:40 localdomain/
          -rw-r–r– 1 munin munin 1407 nov. 28 11:40 logo-h.png
          -rw-r–r– 1 munin munin 393 nov. 28 11:40 logo.png
          -rw-r–r– 1 munin munin 5351 nov. 28 11:40 style.css

          merci …

          • http://www.nicolargo.com nicolargo

            Bizarre les droits en lecture ont l’air bon… Peux tu nous montrer le message d’erreur dans le log de ton serveur Web ?

          • thierry

            Comme François, c’est un Forbidden … oui c’est bizarre, bizarre !!!! et je n’ai aucun htaccess pouvant gêner … Je suis par contre sur un serveur en réseau local, mais je ne voies ce qui pourrait générer ce pb d’accès …

            Le message
            ———–
            Forbidden

            You don’t have permission to access /munin on this server.
            Apache/2.2.22 (Ubuntu) Server at 192.168.1.30 Port 80

          • thierry

            Je viens de faire le test sur un autre serveur et j’ai le même soucis (le premier est en ubuntu 12.04 et ce dernier en 11.04) … par contre, les 2 sont virtualisés, mais je ne voies pas ce qui pourrait gêner la aussi …Il reste que l’installation s’est faîte depuis les paquets ubuntu !! a tester en installation depuis une source ?

          • http://www.nicolargo.com nicolargo

            Clairement un problème de configuration de votre serveur Apache qui ne doit pas aimer les liens symboliques (par défaut c’est interdit).

          • thierry

            Je vais regarder, mais je dois avoir d’autres lens symboliques qui fonctionnent …

            en tout cas, merci merci …

      • Nico

        Il faut les droits d’exécution sur les fichiers dans /var/cache/munin/www.
        Pour cela tape la commande :
        $chmod -R 755 /var/cache/munin/www
        Et normalement se sera good ! J’ai eu le même souci ;)

  • François

    … et celui là aussi:
    [Wed Jun 13 14:53:15 2012] [error] [client 127.0.0.1] Directory index forbidden by Options directive: /var/cache/munin/www/

    • François

      Je me réponds:
      Il fallait modifier le fichier /etc/host et faire pointer le nom de la machine sur 127.0.0.1 et non 127.0.1.1

  • Pingback: Gestion des logs et monitoring d'un serveur web | Alexis's Garage()

  • Nesrine

    bonjour !
    je veux réaliser un benchmark pour Openstack :
    je veux tester les performances des VM !
    est ce que je peux avoir de l’aide ?
    merci

  • AiRV

    Bonjour,

    Merci pour tes tutos .. par contre, moi quand je fais http://ipserveur/munin

    au bout de x secondes ça m’envoit vers http://ipserveur:8080/munin/

    A savoir que j’ai suivi tes aides pour Varnish (port80) et nginx (port8080)

    Et là j’avoue .. je seche ..

    Hervé

  • AiRV

    Coucou .. désolé encore moi .. c’est bon ça fonctionne en fait :)

    il fallait juste que je force la création du repertoire de munin .. :) (www)

  • Pingback: Nono’s Vrac 38 « m0le'o'blog()

  • Pingback: Graph de la température avec Munin - Mon pense bête()