Mise en place de monitoring avec Munin

De Linux Server Wiki
Aller à : navigation, rechercher

1 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 :

aptitude install munin munin-node
a2disconf munin
/etc/init.d/apache2 restart

2 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.

2.1 Contact

Ajoutez dans la configuration de munin :

contact.root.command mail -s "[Munin] ${var:host}: ${var:graph_title}" mail@domain.tld
contact.root.always_send warning critical

3 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

4 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.

5 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

5.1 Ajuster les valeurs warning et critical d'un plugin au niveau du master

Dans le fichier munin.conf du master, au niveau de la section du node, vous pouvez forcer les valeurs de warning et critical (qui génèreront les alertes) du plugin. Le format est plugin.fieldname.{critical,warning} Par exemple :

[groupedunode;hostnamedunode]
        address 127.0.0.1
        df._dev_sda1.warning 90
        hddtemp_smartctl.sda.critical 45

Forcera comme valeur de warning un taux de remplissage de 90% pour la partition sda1 (plugin df) et une température critical de 45°C pour le disque sda (plugin hddtemp_smartctl).

5.2 Apache

aptitude install libwww-perl

5.3 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

5.4 diskstats

5.4.1 Non fonctionnel sous debian wheezy/jessie, fonctionnel sous munin git

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

5.4.2 Fonctionnel sous debian wheezy et jessie

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

6 Patch

6.1 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");
             }
         }
     }

6.2 debian wheezy : munin-graph ne log pas

Fichier:Munin-graph addlogging.patch

7 Passer 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

Le seul prérequis est que l'utilisateur faisant tourner votre serveur web (www-data par défaut sous debian) ait les droits d'écriture dans le dossier /var/lib/munin/cgi-tmp/ (et ses sous dossiers..) ainsi que dans le fichier /var/log/munin/munin-cgi-graph.log