20/02/2010

Monitoring – Munin

Je vais ici vous parler de Munin.
C’est un outils de génération de graphs basé sur rrdtool.
Il permet de grapher toute sorte de chose vachement bien, et comme j’en suis pleinement convaincu, je vais vous le présenter ici.
L’intégration de plugins supplémentaire afin de grapher des choses non prévu à la base est enfantine.
Il existe pas mal de munin publique qui peuvent vous permettre de vous rendre compte de la puissance de l’outils.
Allez par exemple visualiser : https://supervision.globenet.org/munin/

Geeknode génére sa page statistique grace à des plugins Munin homemade également :
Allez visualiser : http://www.geeknode.org/statistiques.html

J’espère ainsi vous avoir donné l’envie d’aller voir plus loin avec ce soft très bien fait.

Munin se décompose en 2 parties :

Le grapheur munin sur une machine qui va se charger de la surveillance, c’est la machine qui va s’occuper d’interroger tous les nodes, et de générer les graphiques à partir des fichiers rrd collectés.

Le démon munin-node sur chaque machine qui va fournir son état au grapheur.

Evidement, si vous n’avez qu’un seul serveur vous aurez a exécuter munin-graph et munin-node sur la même machine.

munin-node.conf doit binder sur 127.0.0.1 (host) et n’a pas besoin d’accepter autre chose que 127.0.0.1 (allow) dans le cas d’une machine simple.

Si vous avez plusieurs machines à grapher vous devez bien sur écouter sur une ipv4 publique afin que le grapher puisse récupérer vos données.

Pour firewaller munin-node :

INPUT TCP IP.SRC.MUNIN.GRAPH/32 4949 sur les munin-node
OUTPUT TCP 4949 sur le munin-graph

On install munin-node sur les machines à surveiller

MUNIN-NODE est à installer sur toutes les machines que l’on veut grapher.

Installation du daemon munin-node sous Gentoo :

echo 'net-analyzer/munin minimal -ssl -mysql' >> /etc/portage/package.use
emerge -av net-analyzer/munin

Installation du daemon munin-node sous Debian

apt-get install munin-node

Configuration du daemon munin-node

On importe les plugins sous gentoo :
On ajoute les plugins de base
Sous debian les plugins de base en fonction des services tournant sur la machine sont par defaut activés.

cd /etc/munin/plugins
ln -s /usr/libexec/munin/plugins/swap
ln -s /usr/libexec/munin/plugins/memory
ln -s /usr/libexec/munin/plugins/processes
ln -s /usr/libexec/munin/plugins/if_ /etc/munin/plugins/if_eth0
ln -s /usr/libexec/munin/plugins/if_ /etc/munin/plugins/if_eth1
ln -s /usr/libexec/munin/plugins/uptime
ln -s /usr/libexec/munin/plugins/cpu
ln -s /usr/libexec/munin/plugins/load
ln -s /usr/libexec/munin/plugins/df
ln -s /usr/libexec/munin/plugins/interrupts
ln -s /usr/libexec/munin/plugins/iostat
ln -s /usr/libexec/munin/plugins/netstat
ln -s /usr/libexec/munin/plugins/users

On ajoute les plugins apache

ln -s /usr/libexec/munin/plugins/apache_accesses
ln -s /usr/libexec/munin/plugins/apache_processes
ln -s /usr/libexec/munin/plugins/apache_volume

On autorise le serveur à grapher à accéder au munin-node

* /etc/munin/munin-node.conf
allow ^IP\.PRIVE\.DU-SERVEUR-QUI-GRAPH\.ETH1$

* au passage on bind le munin-node sur eth1 aussi, ça évite d’écouter inutilement sur toutes les autres interfaces
host IP.PRIVE.DE.CETTE.MACHINE

Exemple de fichier munin-node.conf

log_level 4
log_file /var/log/munin/munin-node.log
port 4949
pid_file /var/run/munin/munin-node.pid
background 1
setseid 1

# Which port to bind to;
host *
user root
group root
setsid yes

# Regexps for files to ignore

ignore_file ~$
ignore_file \.bak$
ignore_file %$
ignore_file \.dpkg-(tmp|new|old|dist)$
ignore_file \.rpm(save|new)$

allow ^10\.0\.69\.250$

Installation du grapheur

Sous Gentoo :

echo 'net-analyzer/munin -minimal -mysql' > /etc/portage/package.use
emerge -av munin

Sous Debian :

apt-get install munin

Exemple de fichier munin.conf

dbdir   /var/lib/munin
htmldir /var/www/munin
logdir  /var/log/munin
rundir  /var/run/munin
tmpldir /etc/munin/templates

[localhost.localdomain]
    address 127.0.0.1
    use_node_name yes

[brag-nas]
        address 10.0.69.240
        use_node_name yes

[satanas.bragon.info]
        address 10.0.69.45
        use_node_name yes
[lucifer.bragon.info]
        address 10.0.69.1
        use_node_name yes

crontab

Une crontab doit logiquement s’etre ajouté lors de l’installation sur le grapher pour l’utilisateur munin :

crontab -u munin -l
# m h  dom mon dow   command
*/5     * * * *         [ -x /usr/bin/munin-cron ] && /usr/bin/munin-cron

Si la crontab ne s’est pas mise en place rajoutez la.

crontab -u munin -e

Exemples de graphs

Et enjoy les supra bien graph :))

  1. | #1

    Très pratique et facile ce tuto !
    Par contre, ne pas tenir compte des flags du munin-node si le node se trouve sur le grapher.

    Je rajouterais juste http://muninexchange.projects.linpro.no/ pour trouver des plugins.
    Pour en installer un il suffit de (sur le serveur node) :
    – copier le fichier dans /usr/libexec/munin/plugins/
    – faire un chmod +x /usr/libexec/munin/plugins/*
    – ln -s comme expliqué en haut pour l’utiliser
    – rajouter des options pour le plugins dans /etc/munin/plugin-conf.d/munin-node si besoin
    – vous pouvez tester le plugins avec munin-run -debug nom_du_plugins
    – si vous avec des valeur sous # DEBUG, c’est qu’il doit marcher
    – redémarrer munin-node avec /etc/init.d/munin-node restart

  1. | #1