Monitorer sa machine avec Munin

Munin est un logiciel libre et open-source permettant d'avoir un historique des différents état que peuvent avoir les applications, logiciels ou matériel tel que Squid, CPU, RAM, Apache, Nginx, Firewall, etc. Il est très souvent utilisé lors d'un incident car il permet de savoir dans quel état était la machine à un instant donnée.


Installation et configuration

C'est vraiment très simple :

apt install munin

Si vous utiliser une petite machine, il est possible de réduire le nombre maximal de processus. Cela permet de consommer moins de mémoire.

nano /etc/munin/munin.conf

On peut ajouter ce paramètre :

max_processes 4

Désactiver et activer des plugins

Les plugins disponible de trouve dans le dossier /usr/share/munin/plugins/ et la liste des plugins chargés se trouve dans /etc/munin/plugins/ .

Admettons que l'on ne veut pas le graph des entropy :

unlink /etc/munin/plugins/entropy

Mais que l'on veut celui correspondant au nombres de requêtes MySQL :

ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/

Vérifier que les plugins ne manque de rien :

munin-node-configure --suggest

Notamment dans le cas de MySQL, il y a besoin d'installer le paquet suivant :

apt install libcache-cache-perl

Prendre en compte les modifications :

/etc/init.d/munin-node restart

Il est possible de forcer la création des graph :

sudo -u munin munin-cron

Voici la liste des plugins désactivés et activés sur mon serveur personnel :

Cliquez pour afficher ⇲

Cliquez pour masquer ⇱

unlink /etc/munin/plugins/vmstat
unlink /etc/munin/plugins/uptime
unlink /etc/munin/plugins/swap
unlink /etc/munin/plugins/open_files
unlink /etc/munin/plugins/entropy
unlink /etc/munin/plugins/interrupts
unlink /etc/munin/plugins/open_inodes
unlink /etc/munin/plugins/diskstats
unlink /etc/munin/plugins/munin_stats
unlink /etc/munin/plugins/proc_pri
unlink /etc/munin/plugins/forks
unlink /etc/munin/plugins/users
unlink /etc/munin/plugins/irqstats
unlink /etc/munin/plugins/df_inode

ln-s /usr/share/munin/plugins/squid_objectsize/etc/munin/plugins/
ln-s /usr/share/munin/plugins/squid_cache/etc/munin/plugins/
ln-s /usr/share/munin/plugins/nginx_request/etc/munin/plugins/
ln-s /usr/share/munin/plugins/mysql_queries/etc/munin/plugins/
ln-s /usr/share/munin/plugins/mysql_threads/etc/munin/plugins/
ln-s /usr/share/munin/plugins/squid_traffic/etc/munin/plugins/
ln-s /usr/share/munin/plugins/squid_requests/etc/munin/plugins/

Accessible via Nginx

Rendons accessible Munin via le domaine munin.domaine.com. On créer alors le vhost suivant :

nano /etc/nginx/site-enabled/munin.conf
munin.conf
server {
        listen 0.0.0.0:80;
        server_name  munin.domaine.com;
 
        root /var/cache/munin/www;
 
        access_log /var/log/nginx/munin.domaine.com.access;
        error_log /var/log/nginx/munin.domaine.com.error error;
}

On vérifie qu'il n'y a pas d'erreurs de syntaxes puis on recharge la configuration:

nginx -t
/etc/init.d/nginx reload

Ajouter un node

Admettons que nous souhaitons monitorer un serveur en 192.168.0.12 en plus (son maître aura pour IP 192.168.0.19). Nous aurons alors besoin de ce paquet et de ses dépendances :

apt install munin-node

Avec une petite configuration rapide :

munin-node-configure --suggest --shell

On indique à Munin que le serveur maître peut communiquer avec lui en ajoutant la directive “allow”:

nano /etc/munin/munin-node.conf
allow ^192\.168\.0\.19$

Il reste plus qu'a indiquer au serveur maître qu'il a un autre node à monitorer :

nano  /etc/munin/munin.conf
[machine.domaine.com]
      address 192.168.0.12
      use_node_name yes

Pour prendre en compte ces nouveautés, on redémarre le service :

/etc/init.d/munin-node restart

Quelques commandes

  • Trouver et tester le fonctionnement d'un module
# ls -lah /usr/share/munin/plugins/*apache*
# munin-run apache_accesses
accesses80.value 10598855