La version 2 de Munin apporte un nouveau mode de récupération des données entre le master et ses nodes : le mode asynchrone. Celui-ci vise à corriger deux situations critiques à savoir :

  • lorsque le nombre de nodes à monitorer est important, le temps de récupération des données depuis les nodes est supérieur à celui de mise à jour.
  • lorsque les nodes sont distants, les connexions peuvent finir en timeout du fait d’une ligne lente ou d’un trop grand nombre d’éléments monitorés.

Dans les deux cas, le monitoring est impossible. Toutefois, ces contraintes sont levées en activant le mode asynchrone. Un démon supplémentaire munin-asyncd est alors lancé sur chaque node, dont le rôle est de se connecter à munin-node pour récupérer et stocker temporairement les résultats au format texte. Le serveur munin se contente ensuite de récupérer ces fichiers par connexion SSH pour en générer les fichiers RRD.

Je présente ici la configuration d’un node en asynchrone.

Configuration du node

root@node:~# apt-get install munin-node munin-async munin-plugins-extra

Seule l’écoute réseau en local est nécessaire :

root@node:~# nano /etc/munin/munin-node.conf
listen 120.0.0.1
allow ^127\.0\.0\.1$

Le node est prêt pour être démarré ; munin-asyncd doit être lancé à la suite  :

root@node:~# /etc/init.d/munin-node restart && /etc/init.d/munin-async restart

Configuration du serveur

root@server:~# apt-get install munin

Les clés SSH de l’utilisateur munin doivent être générées afin que celui-ci puisse se connecter en tant que munin-async sur le node :

root@server:~# su -s /bin/bash munin
munin@server:~$ ssh-keygen -t rsa
munin@server:~$ ssh-copy-id munin-async@node

L’utilisateur munin peut alors se connecter sur le node. La première connexion SSH doit être faite manuellement afin de valider la confirmation (ne pas le faire bloque la récupéreration des données) :

munin@server:~$ ssh munin-async@node

Par sécurité, je vous invite à restreindre la connexion SSH sur le node :

  • en insérant une ligne de ce type dans le fichier /etc/security/access.conf :
    +munin-async : [IP_SRV_MUNIN]
    
  • limiter la connexion SSH de l’utilisateur munin à ne pouvoir exécuter que la commande munin-async :
    munin-async@node$ nano .ssh/authorized_keys
    
    no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,command="/usr/share/munin/munin-async --spoolfetch" ssh-rsa [PUBLIC KEY]
    

Vous pouvez relancer la connexion SSH, munin-async prend la main comme shell. Ceci validera au final la configuration réseau. Reste à déclarer ce node au niveau du master :

root@server:~# nano /etc/munin/munin-node.conf
[node]
   address ssh://munin-async@node

Patientez quelques minutes (dix minutes) pour que les graphes soient visibles.