Installation et configuration de Munin, le maître des graphes
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...:
sudo ln -s /var/cache/munin/www /var/www/munin
sudo /etc/init.d/munin-node restart
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:
# regular expression, since Net::Server does not understand CIDR-style
# network notation unless the perl module Net::CIDR is installed. You
# may repeat the allow line as many times as you'd like
allow ^192\\.168\\.1\\.200$
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:
sudo ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request
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:
nginx_request | yes | no [LWP::UserAgent not found]
nginx_status | yes | no [LWP::UserAgent not found]
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:
nginx_request | yes | yes
nginx_status | yes | yes
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:
# databases, the HTML output, logs and the lock/pid files. They all
# must be writable by the user running munin-cron. They are all
# defaulted to the values you see here.
#
dbdir /var/lib/munin
htmldir /var/cache/munin/www/
logdir /var/log/munin
rundir /var/run/munin
Il faut configurer la liste des noeuds de la manière suivante:
[maitre.mondomaine.com]
address 127.0.0.1
[noeud1.mondomaine.com]
address noeud1.mondomaine.com
[noeud2.mondomaine.com]
address noeud2.mondomaine
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.