Mise en place de monitoring avec Munin
Installer Munin
Munin se divise en deux parties :
- Le Master : qui s'occupe de l'affichage et de récupérer les valeurs auprès des nodes
- Le Node : qui fournit les valeurs au master et contient des plugins pour récupérer les valeurs à grapher
Il existe un grand nombre de plugins, ceux-ci peuvent être écrit en bash/perl/python (ou autre). Chaque plugin se charge de récupérer (en parsant des logs, requêtant une base de données, etc) les valeurs à envoyer au Master.
Nous allons maintenant installer Munin sur notre première machine, qui aura donc le master et un node :
sudo apt-get install munin munin-node
Configurer le Master
Pour configurer le Master nous allons édité le fichier /etc/munin/munin.conf.
La valeur la plus intéressante dans un premier temps est la suivante :
htmldir /var/cache/munin/www
C'est dans ce dossier que Munin va stocker le site pour afficher les graphs.
Vous pouvez ensuite configurer les nodes à interroger de la façon suivante :
[groupedunode;hostnamedunode] address 127.0.0.1
L'addresse étant bien entendu celle du node, ici nous interrogeons le node contenu sur le même serveur.
hostnamedunode
correspond à l'hostname du serveur tel que défini dans /etc/hostname
. Vous devez pour chaque enregistrement vous assurer que l'hostname défini après le ; dans la configuration du master munin corresponde bien à l'hostname utilisé par le node (par défaut lu depuis /etc/hostname
). Vous pouvez cependant forcer l'hostname du node munin avec la directive host_name
dans la configuration du node (/etc/munin/munin-node.conf
).
Note : la configuration du Master ne se reload pas, celui-ci relit sa configuration dès qu'il interroge les nodes.
Configurer le Node
Nous pouvons ensuite configurer le node à l'aide du fichier /etc/munin/munin-node.conf. Les valeurs importantes sont les suivantes :
allow ^127\.0\.0\.1$ host *
La première ligne permet de n'autoriser que l'addresse indiquer à interroger le node. La deuxième permet de définir sur quelle interface la node doit écouter.
Le mieux est bien entendu de restreindre au maximum, en changeant la configuration de base par :
allow ^127\.0\.0\.1$ host 127.0.0.1
Bien entendu si la node n'est pas au même endroit que le Master, vous devrez adapter la configuration.
Après cette configuration il ne faut pas oublier de redémarrer le node :
sudo /etc/init.d/munin-node restart
Configurer Apache
Munin propose une configuration de base pour Apache dans /etc/munin/apache.conf. Vous pouvez l'adapter à vos besoins, en mettant toujours comme DocumentRoot la valeur défini pour htmldir dans /etc/munin/munin.conf.
N'oubliez pas de mettre en place un htaccess pour protéger vos graphs par un nom d'utilisateur/mot de passe.
Les plugins
Dans les versions actuelles de Munin, le Master interroge les nodes toutes les 5 minutes. Les plugins activés sont définis sur chaque node dans /etc/munin/plugins. Le principe est de créer un lien symbolique dans ce dossier vers le plugin. Pour désactiver/activer un plugin, il suffit de créer/supprimer le lien symbolique.
Lorsque le Master interrogera à nouveau le node, il adaptera les graphs en conséquence.
Pour voir la liste des plugins :
munin-node-configure
Pour voir les plugins suggérés :
munin-node-configure --suggest
Pour avoir facilement les lignes de créations des liens virtuels :
munin-node-configure --suggest --shell
Pour tester un plugin :
munin-run <plugin name>
La configuration individuelle de chaque plugin peut se faire en créant des fichiers dans /etc/munin/plugin-conf.d/
Notez qu'a chaque fois que vous ajoutez, modifiez, ou changez la configuration d'un plugin, il faut relancer munin-node
En cours de rédaction
MySQL
aptitude install libcache-cache-perl cd /etc/munin/plugins/ ln -s /usr/share/munin/plugins/mysql_ mysql_ ./mysql_ suggest
Vous devriez avoir une liste de plugin mysql suggéré Pour ajouter le plugin commands :
ln -s /usr/share/munin/plugins/mysql_ /etc/munin/plugins/mysql_commands
diskstats
Non fonctionnel sous debian wheezy
Le plugin diskstats n'utilise pas de variable d'environnement sous debian wheezy (c'est réglé sur le git de munin), vous ne pouvez donc pas modifier les variables telles que les warning directement sur le node (sauf en éditant directement le plugin). A titre d'information voila ce qu'il aurait fallu faire une fois le patch appliqué :
/etc/munin/plugin-conf.d/diskstats
[diskstats] env.avgrdwait.warning 0:2 env.avgwrwait.warning 0:2
Fonctionnel sous debian wheezy
Dans la configuration du master vous pouvez cependant faire ceci :
[lenode;hostnamedunode] address ip_du_node diskstats_latency.sda.avgrdwait.warning 0:2 diskstats_latency.sda.avgwrwait.warning 0:2
Patch
Modifier la couleur de la barre de warning utilisé par certains graphs
Ce patch modifie en gris la couleur utilisé pour la barre représentant la ligne de warning (utilisé sur certains graphs comme df) Fichier:Munin warning bar grey.patch
--- /usr/share/perl5/Munin/Master/GraphOld.pm 2014-11-12 18:49:57.948977594 +0100 +++ /usr/share/perl5/Munin/Master/GraphOld.pm 2014-11-12 18:42:53.208978192 +0100 @@ -1158,20 +1158,14 @@ @rrd, "HRULE:" . $warn_min - . "#" . ( - $single_value - ? "ff0000" - : $COLOUR[($field_count - 1) % @COLOUR])); + . "#bdbdbd"); } if (defined($warn_max) and $warn_max ne '') { unshift( @rrd, "HRULE:" . $warn_max - . "#" . ( - $single_value - ? "ff0000" - : $COLOUR[($field_count - 1) % @COLOUR])); + . "#bdbdbd"); } } @@ -1236,20 +1230,14 @@ @rrd, "HRULE:" . $warn_min - . "#" . ( - $single_value - ? "ff0000" - : $COLOUR[($field_count - 1) % @COLOUR])); + . "#bdbdbd"); } if (defined($warn_max) and $warn_max ne '') { unshift( @rrd, "HRULE:" . $warn_max - . "#" . ( - $single_value - ? "ff0000" - : $COLOUR[($field_count - 1) % @COLOUR])); + . "#bdbdbd"); } } }
debian wheezy : munin-graph ne log pas
Fichier:Munin-graph addlogging.patch
Passe en cgi
Vous avez du remarquer que munin -plus précisément munin-graph- est long a s'executer et utilise beaucoup de cpu toutes les 5 minutes. Poiur réduire la charge, vous pouvez passer la génération des graphiques en cgi. Les graphiques seront alors générés à la demande lorsque quelqu'un charge une page de munin.
Editez le fichier /etc/munin/munin.conf
et modifiez la variable graph_strategy
de cette manière :
graph_strategy cgi