Monitoring avec Munin 2
dim. 15 juin 2014 by MarmotteMunin est un outil de monitoring qui affiche l'activité des machines surveillées sous forme de graphiques. Il est constitué d'une machine maître, qui affiche les informations, et de noeuds, installés sur les machines à surveiller.
Installation¶
Sous Debian, il suffit d'installer le paquet munin
pour le maître.
Il est aussi nécessaire de disposer d'un serveur web, pour afficher les graphiques, j'utilise Apache 2 pour cette tâche.
$ sudo apt-get install --no-install-recommends munin apache2
Sur les machines à surveiller, il faut installer le paquet munin-node
.
$ sudo apt-get install --no-install-recommends munin-node
Note : Pour Debian Squeeze, Munin 2 n'est disponible que dans le dépôt
backports
:deb http://backports.debian.org/debian-backports squeeze-backports main
Configuration du serveur maître¶
Configuration de Munin 2¶
La configuration de Munin est située dans le fichier /etc/munin/munin.conf
.
Dans les paquets Debian, les fichiers contenus dans le répertoire /etc/munin/munin-conf.d/
sont inclus automatiquement.
Comme je n'aime pas modifier les fichiers installés par défaut, je ferais donc toutes mes configurations dans des fichiers que je crée dans ce répertoire.
Les paramètres par défaut me conviennent, je déclare donc uniquement les machines que le serveur Munin devra surveiller.
La configuration basique d'un hôte se présente donc sous la forme d'un fichier /etc/munin/munin-conf.d/<Hostname>.conf
et contient :
[<NodeGroup>;<NodeName>]
address <NodeAddress>
use_node_name yes
Note : Pour se connecter en SSH sur un noeud, la ligne
address
sera :address ssh://<Hostname> -W localhost:<MuninPort>
Création d'une clé SSH¶
Pour autoriser la connexion en SSH sur les noeuds, il est nécessaire de créer une clé SSH à l'utilisateur munin.
$ sudo -u munin ssh-keygen -t dsa
La clé publique se trouve alors dans le fichier ~munin/.ssh/id_dsa.pub
.
Configuration d'Apache 2¶
Pour permettre la consultation des graphiques générés par Munin, il suffit de créer un vhost apache pointant vers le répertoire défini comme htmldir
dans la configuration du serveur maître Munin.
Comme le serveur de monitoring ne sert qu'à ça, et n'est accessible que depuis le LAN, j'ai fait un vhost apache très simple, mais absolument pas sécurisé, basé sur le fichier /etc/munin/apache.conf
.
Pour faire un serveur accessible publiquement, il peut être nécessaire d'ajouter quelques vérifications.
<VirtualHost *:80>
DocumentRoot /var/cache/munin/www
<Directory /var/cache/munin/www>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault M310
</IfModule>
</Directory>
# Enables fastcgi for munin-cgi-graph if present
ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
<Location /munin-cgi/munin-cgi-graph>
<IfModule mod_fastcgi.c>
SetHandler fastcgi-script
</IfModule>
</Location>
ScriptAlias /munin-cgi/munin-cgi-html /usr/lib/munin/cgi/munin-cgi-html
<Location /munin-cgi/munin-cgi-html>
<IfModule mod_fastcgi.c>
SetHandler fastcgi-script
</IfModule>
</Location>
</VirtualHost>
Recevoir des alertes¶
Par défaut, lorsque des valeurs arrivent hors des limites définies par les plugins, si des limites sont définies, Munin les affiche dans son interface. Il est possible d'indiquer à Munin d'envoyer automatiquement des alertes par email, pour les rendre plus visibles.
Munin peut lancer une commande lorsqu'une alerte est émise.
En lui donnant l'utilitaire mail
comme commande, il enverra un email à l'adresse spécifiée :
contact.email.command mail -s "Munin notification ${var:host}" email@example.com
Par défaut, Munin envoie une unique alerte. Si on veut recevoir une alerte à chaque mise à jour des graphiques, il faut le préciser dans la configuration :
contact.email.always_send critical
Note : J'ai ici demandé d'envoyer les alertes critiques en boucle, mais pas les warnings. Il est possible de préciser
warning
aussi dans la ligne pour recevoir aussi les warnings en boucle.
Pour définir une alerte personnalisée pour un hôte précis, il y a plusieurs syntaxes :
<PluginName>.<VariableName>.[warning/critical] <Value>
<PluginName>.<VariableName>.[warning/critical] [<Min>:<Max>]
Les valeurs dépendent du plugin.
Par exemple, pour le plugin df
(utilisation disque en pourcentage), si on veut recevoir un warning dès que la partition nommée _
dépasse 90%, il faut mettre :
df._.warning 90
Note : Le nom à mettre est le nom interne à Munin. Il peut être trouvé losqu'on clique sur un graphique dans l'interface web, dans la colonne "Internal name" du tableau qui se trouve en bas.
Configuration des machines à surveiller¶
La configuration d'un noeud se trouve dans le fichier /etc/munin/munin-node.conf
.
La configuration par défaut me convient, je n'ai donc effectué aucune modification
Connexion en SSH¶
Pour autoriser la connexion du serveur maître en SSH, il faut ajouter la clé SSH de l'utilisateur munin
du maître sur l'utilisateur munin
de la machine à surveiller.
L'installation du paquet munin-node
ne crée pas le homedir de l'utilisateur munin
automatiquement, il faut donc le faire manuellement :
$ sudo mkdir -p ~munin/.ssh
$ sudo chown -R munin:munin ~munin
Nous pouvons maintenant copier la clé SSH du serveur maître, dans le fichier ~munin/.ssh/authorized_keys
.
Il est ensuite nécessaire d'ajouter la clé de la machine à surveiller dans la liste des hôtes connus du serveur maître. Le plus simple pour cela est de tenter la connexion SSH manuellement depuis le serveur maître :
$ sudo -u munin ssh <Hostname>
Activation des plugins¶
Pour définir les éléments qui seront surveillés, il faut activer les plugins correspondants.
Un bon nombre de plugins est fournis par le paquet munin-plugins-core
, disponibles dans le répertoire /usr/share/munin/plugins/
.
Il suffit de faire des liens symboliques vers ces plugins dans le répertoire /etc/munin/plugins/
pour les activer.
D'autres plugins sont proposés dans le paquet munin-plugins-extra
.
Note : Après l'activation d'un plugin, il est nécessaire de relancer le noeud :
$ sudo service munin-node restart
Configuration des plugins¶
Certains plugins nécessitent une configuration spécifique.
Les configurations nécessaires aux plugins fournis par les paquets Debian sont disponibles dans le fichier /etc/munin/plugin-conf.d/munin-node
.
Il est possible d'ajouter d'autres fichiers dans ce répertoire pour fournir une configuration aux plugins personnalisés.
Utilisation des plugins de la communauté¶
Un dépôt de plugins communautaires est disponible sur GitHub : https://github.com/munin-monitoring/contrib
J'ai pour habitude de le cloner dans le répertoire utilisateur de munin :
$ sudo -u munin -s
$ cd
$ git clone https://github.com/munin-monitoring/contrib.git
Il est ensuite possible d'utiliser les plugins de ce dépôt en créant des liens symboliques dans le répertoire /etc/munin/plugins/
.
Remarques générales¶
Monitoring de PostgreSQL¶
Pour le monitoring de PostgreSQL, il est nécessaire d'installer le paquet libdbd-pg-perl
.