Ceci est une ancienne révision du document !
Munin : le grapheur pour monitorer les machines d'un parc
Munin (Munin) est un système complet de monitoring (ou métrologie) de machine. Il permet de générer une série de graphes à partir des informations reçues par les autres machines : utilisation de la mémoire vive, load average, usage CPU, réseau,… Il permet même d'envoyer des alertes par mail ou vers Nagios en fonction de seuils d'alerte prédéfinis.
Munin fonctionne sur le modèle client-serveur. Un petit démon tourne sur chacune des machines devant être surveillée (munin-node
). Ce démon fournit les informations brutes concernant la machine dès que le grapheur (munin
) les lui demande.
Pour surveiller un parc informatique, vous devez donc installer :
- le grapheur
munin
sur une machine qui va se charger de la surveillance. - le démon de noeud
munin-node
sur chaque machine qui va fournir son état au grapheur.
Dans la mythologie nordique, Hugin et Munin sont les deux corbeaux messagers d'Odin. Tous les jours, ils parcourent le monde et reviennent ensuite rapporter au dieu tout ce qu'ils ont vu et entendu. Hugin représente la pensée, tandis que son comparse Munin représente la mémoire.
Munin (le grapheur)
Installation
Installez le paquet munin (suivez la procédure d'installation sur les noeuds si vous désirez monitorer également la machine qui génère les graphes) et assurez-vous que le paquet apache2 est bien installé :
dpkg -l | egrep -e "^ii.*apache2 "
Configuration
Il faut indiquer à Munin quels hôtes il doit surveiller. Dans le fichier /etc/munin/munin.conf. Vous devriez avoir une configuration par défaut qui ressemble à ceci :
[localhost.localdomain] address 127.0.0.1 use_node_name yes
Pour chacune de vos machines, vous devez indiquer son nom d'hôte
, son domaine
et son adresse ip
.
Par exemple, pour la machine www.ubuntu-fr.org
qui est sur l'IP 192.168.0.1
, on ajoute l'entrée suivante dans le fichier /etc/munin/munin.conf :
[www.ubuntu-fr.org] address 192.168.0.1 use_node_name yes
Les informations graphées sont choisies au niveau du noeud.
Vous pouvez également etre averti par mail en cas de dépassement d'un seuil d'alerte (par ex:disque plein) :
contact.someuser.command mail -s "Munin notification" votre@mail.com
ou encore envoyer une alerte vers Nagios :
contact.nagios.command /usr/sbin/send_nsca -H nagios.host.com -c /etc/send_nsca.cfg
La périodicité des mises à jour des graphes est déterminée par le programme munin-cron
qui (par défaut) se lance toutes les 5 minutes.
A l'installation, le fichier /etc/cron.d/munin a été créé. En éditant ce dernier, vous pourrez modifier la périodicité des mises à jour des graphes.
Voir les graphes
Il vous suffit d'aller sur la page web suivante : http://localhost/munin si vous avez installé Munin sur votre machine en local. Sinon, remplacez localhost par l'ip de la machine où se trouve le grapheur.
Munin-node (le démon sur les noeuds)
Sur chaque machine que vous désirez surveiller, il vous faut installer le démon qui va répondre aux requêtes du grapheur.
Installation
Installez le paquet munin-node
Configuration
Accès au noeud
Pour que le grapheur accède aux informations du noeud, il faut ouvrir le firewall (si nécessaire, il s'agit du port 4949 par défaut) et indiquer quels sont les grapheurs qui peuvent se connecter.
Cette information est indiquée dans le fichier de configuration /etc/munin/munin-node.conf. À la fin du fichier de configuration, vous trouverez une ligne de ce style :
allow ^127\.0\.0\.1$
Pour autoriser votre grapheur à se connecter, vous ajouter une ligne du même type. Par exemple, si votre grapheur possède l'IP 192.168.0.253, vous ajoutez la ligne :
allow ^192\.168\.0\.253$
Configuration des plugins
Chaque information affichée dans les graphes est traitée par un plugin. Les plugins actifs sont en réalité des liens symboliques qui se trouvent dans le répertoire /etc/munin/plugins. La plupart des plugins Munin sont installés par défaut dans le répertoire /usr/share/munin/plugins/
À l'installation du paquet, les plugins détectés sont automatiquement ajoutés.
Le fichier de configuration des plugins est /etc/munin/plugin-conf.d/munin-node
Normalement, on ne règle que les utilisateurs et les groupes sous lesquels tournent les plugins (rapport aux droits d'exécution, de lecture et d'écriture… si vous ne savez pas de quoi il est question, lisez donc la documentation sur les permissions.
Pour visualiser facilement les plugins installés, vous pouvez utiliser la commande :
munin-node-configure
Cette commande vous permet également d'obtenir une suggestion des pluggins à rajouter :
munin-node-configure --suggest
vous obtiendrez les commandes de création des liens pour l'activation des plugins avec la commande :
munin-node-configure --suggest --shell
Test des plugins
Si vous créez vos plugins ou si vous désirez seulement tester la bonne configuration de vos plugins, vous ne devez pas lancer le plugins comme si vous lanciez un script shell. Vous devez utiliser la commande munin-run, par exemple :
munin-run postgres_bgwriter
le plugin sera alors lancer avec les variables nécessaires (nom utilisateur,nom BDD …)
plugins Apache
Les plugins Apache ont besoin de la bibliothèque libwww-perl.
Afin de récupérer les données statistique d'apache le module status doit être activé avec le mode étendue. Pour cela on vérifiera la présence des liens :
/etc/apache2/mods-enabled/status.load /etc/apache2/mods-enabled/status.conf
Si ceux-ci ne sont pas présents on l'installera avec la commande :
sudo a2enmod status
Le fichier status.conf doit contenir, au minimum, les directives suivantes :
<IfModule mod_status.c> <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from localhost ip6-localhost </Location> ExtendedStatus On </IfModule>
plugins Proftpd
Les plugins Proftpd ont besoin de logtail. D'autre part, il faut que vous puissiez lire le contenu du log de transfert de proftpd. Ce dernier est normalement situé à /var/log/proftpd/xferlog , mais une vérification s'impose : lisez le fichier de configuration de proftpd, normalement /etc/proftpd/proftpd.conf :
less /etc/proftpd/proftpd.conf
et repérez la balise TransferLog, elle indique l'emplacement du fichier de log qui nous interesse.
Regardez les permissions et propriétaires du fichier. Si le propriétaire est root et son groupe, root, peut être vaut-il mieux modifier son groupe. Je l'ai mis à adm. Et j'ai autorisé la lecture et l'écriture. (l'écriture, je ne sais pas si c'est nécessaire, mais la lecture, oui, assurement !)
chown root:adm xferlog chmod ug+rw xferlog
Ensuite, assurez vous que les plugins proftpd tournent bien dans le bon groupe. Pour ce faire éditez le fichier /etc/munin/plugin-conf.d/munin-node, et reperez (ou ajoutez) la balise [proftpd*] ou [proftpd_*], ajoutez en dessous, le groupe ou l'utilisateur que vous avez réglé sur xferlog, pour moi, cela donne :
[proftpd*] group adm
Règles Iptables (Firewall)
iptables -A OUTPUT -p tcp --dport 4949 -j ACCEPT iptables -A INPUT -p tcp --dport 4949 -j ACCEPT
Vous pouvez également autoriser la "récolte" d'informations depuis un seul serveur en spécifiant la source autorisée dans la deuxième règle.
Par exemple, chez moi, seul le pc de la maison est autorisé à récupérer les informations du serveur dédié. En supposant que mon ip à la maison soit 82.xxx.xxx.xxx Les commandes iptables à lancer sur le serveur ressembleraient donc à ceci:
iptables -A OUTPUT -p tcp --dport 4949 -j ACCEPT iptables -A INPUT -p tcp --dport 4949 -s 82.xxx.xxx.xxx -j ACCEPT
ps: ces règles s'appliquent uniquement avec une police par défaut "DROP"
Liens
- Exemple de Munin en action : http://munin.ping.uio.no/, Munin d'Opendoc.net
Contributeurs : ostaquet, stephaneguedon, elemmire,rapidos