Munin

Nous allons ici voir Munin. Il s'agit d'un outil de monitoring qui permet de récupérer un certains nombres de données sur votre serveur et d'en faire des graphes. Vous pourrez notamment suivre la charge CPU, l'utilisation de la mémoire vive, la charge réseaux, ...

Munin est par ailleurs décomposé en deux outils (paquets) : munin et munin-node. Si le premier permet de générer des graphes à partir des données récupérées sur les serveurs, le second permet de mettre en oeuvre les plugins qui vont récupérer lesdites données. Vous pourrez ainsi installer munin et apache2 sur un premier serveur afin de le monitorer. Puis installer munin-node sur le second serveur afin de le monitorer également, mais aussi afin d'avoir les graphes de ce second serveur visible depuis le premier serveur.

Bref, ce n'est pas le cas d'utilisation le plus courant pour la plupart d'entre vous ;)

Ce guide a été écrit pour Debian Wheezy et Munin 2.0.

Installation

Son installation est très simple :

apt-get install munin

Cependant, il y a encore de la configuration à faire après ça.

Configuration d'Apache2

Il est nécessaire de créer un lien symbolique de la configuration Apache2 fournie par défaut, vers le dossier conf.d d'Apache :

ln -s /etc/munin/apache.conf /etc/apache2/conf.d/munin.conf

Il vous faudra ensuite modifier ce fichier afin d'autoriser l'accès à munin (par défaut il n'est possible qu'en local). Pour ce faire, remplacez la ligne Allow from localhost 127.0.0.0/8 ::1 par Allow from all (ou Allow from XX.XX.XX.XXsi vous souhaitez limiter l'accès à une IP spécifique).

Il ne vous reste plus qu'à recharger la config d'Apache2 :

apache2ctl -t # Doit renvoyer "Syntax OK", sinon vérifiez l'erreur indiqué
service apache2 reload

Vous pourrez désormais accéder à vos stats via http://ip.de.votre.serveur/munin/

Configuration de Munin

On va içi voir la configuration de Munin en lui-même ainsi que la (dés)activation de plugins Munin. En effet un ensemble de plugins sont utilisé pour récupérés les stats. Deux paramètres vont nous intéresser : la vitesse de rafraichissement des graphes ainsi que l'adresse mail utilisé en cas de dépassement des limites définies par les plugins.

Pour cela, nous allons modifier le fichier /etc/cron.d/munin. Vous y trouverez le paramètre MAILTO que vous pourrez modifier à votre convenance. Vous devriez également y voir la ligne suivante :

*/5 * * * *     munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi

La partie */5 désigne un rafraichissement toutes les 5 minutes. Vous pouvez donc modifier le nombre après le slash afin d'accélérer/réduire la vitesse de rafraichissement des données.

Modules

Tous les modules disponibles sont stockés dans le dossier /usr/share/munin/plugins/. Les modules actifs sont stockés dans /etc/munin/plugins/ (ce ne sont que des liens symboliques de l'un vers l'autre).

Il est nécessaire de redémarrer le service munin-node après l'activation/désactivation de tout module Munin :

service munin-node restart

Un script munin-node-configure (présent par défaut dans le paquet Debian munin-node) vous permettra de détecter quels plugins devraient être activé sur votre serveur. Cet utilitaire s'utilise principalement de deux manières : munin-node-configure --suggest|--shell. Si le premier paramètre parrait évident (vous proposer quel plugin installer), la seconde l'est moins. Ce deuxième paramètre vous permettra de créer automatiquement les symlinks nécessaires entre le dossier /usr/share/munin/plugins/ et /etc/munin/plugins/.

Vous pourrez trouver plus d'infos sur (http://munin-monitoring.org/wiki/munin-node-configure)[cette page].

Module Apache2

Il vous faudra vérifier si le module status d'Apache est actif :

a2enmod status
apache2ctl -t # Doit renvoyer "Syntax OK", sinon vérifiez l'erreur indiqué
service apache2 reload

Il nous suffit donc de faire les liens symboliques suivants afin d'activer les 3 modules apache2 :

ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume
ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes

Monitorer plusieurs serveurs avec Munin

Comme expliqué au début, un serveur munin peut intergir avec d'autres nodes. Pour cela, il vous suffira d'installer le paquet munin sur le serveur principal et munin-node sur les autres serveurs. Le paquet munin-node étant automatiquement installé lors de l'installation du paquet munin, vous pourrez choisir de désinstaller le premier du serveur principal (tout en laissant le second installé), si vous souhaitez ne pas monitorer le serveur hébergeant munin (par exemple s'il est installé dans une machine virtuelle ou un container).

Il faudra également autoriser le serveur principal à accéder au node à l'aide du paramètre allow, dans le fichier /etc/munin/munin-node.conf. Exemple (1.2.3.1 étant l'IP du serveur principal) :

allow ^1\.2\.3\.1$

Vous pouvez également modifier le port utilisé par le node (4949 par défaut). Toujours dans le fichier /etc/munin/munin-node.conf :

port 1234

Il vous faudra également déclarer votre node sur votre serveur principal. Cette fois ci dans le fichier /etc/munin/munin.conf :

[exemple.com]
    address 1.2.3.2
    use_node_name yes

Enfin, il vous faudra autoriser l'accès à ce port dans votre pare feu (si vous en avez configurer un) côté client :

iptables -A INPUT -p tcp --dport 4949 -j ACCEPT

et côté serveur :

iptables -A OUTPUT -p tcp --dport 4949 -j ACCEPT

Notifications automatiques par mail

Il vous est possible de configurer un envoi automatique de mails en cas de dépassement de certaines valeurs. Voici la syntaxe à utiliser :

contacts nir
contact.nir.command mail -s "Munin notification ${var:host}" address@mail.tld
contact.nir.always_send warning critical

Cette syntaxe vous permet de définir plusieurs adresses de contacts différentes (1ère ligne), ainsi qu'une configuration spécifique pour chaque adresse (2ème et 3ème ligne).

Faites attention : ce bloc de configuration doit être placé avant toutes définition de serveurs, ou vous risquez de vous retrouvez avec un serveur Munin inopérant.