Des scripts d’init pour Munin en mode CGI

Munin est un superbe outil de monitoring, mais il souffre d'un petit défaut (je vous rassure tout de suite,la résolution de ce défaut est intégrée à Munin) : il crée les pages HTML et les graphes à chaque récupération de données sur les nœuds surveillés.

Quand on surveille beaucoup de nœuds et/ou qu'on a beaucoup de sondes, cela alourdit fortement la charge de la machine qui héberge le programme de collecte des données.

Pour remédier à cela, plutôt que de travailler à chaque collecte de données, on va dire à Munin de laisser cette tâche à des script CGI qui généreront l'HTML et les graphes à la volée, lors de la consultation des pages de supervision en mettant ces directives dans le fichier /etc/munin/munin.conf :

html_strategy cgi
graph_strategy cgi

Il faudra alors adapter la configuration de son serveur web pour utiliser ces scripts CGI. Si la configuration d'Apache est aisée et bien documentée, celle de Nginx est un peu plus pauvre.

En effet, Nginx n'étant pas conçu pour lancer de lui-même des script CGI, il faut avoir recours à spawn-fcgi pour lancer les programmes en arrière-plan. Hors, il n'y a pas de script d'init pour spawn-fcgi. Il faudra donc, soit démarrer les services à la main après un reboot du serveur, soit mettre la ligne de commande dans /etc/rc.local.

La première solution est fastidieuse tandis que la deuxième est juste crade.

J'ai donc écrit des scripts d'init pour les scripts CGI de Munin avec spawn-fcgi.

Téléchargez cette archive : munin-cgi.tar.bz2 et copiez là sur votre serveur.

tar xvf munin-cgi.tar.bz2
sudo mv munin-cgi /etc/default
sudo mv munin-cgi-html munin-cgi-graph /etc/init.d
sudo update-rc.d munin-cgi-html defaults
sudo update-rc.d munin-cgi-graph defaults
sudo service munin-cgi-html start
sudo service munin-cgi-graph start

Bien évidemment, adaptez /etc/default/munin-cgi à votre installation de Munin

Enjoy 🙂

Bonus : j'ai écrit un papier avec Alexandre Simon (mon boss) sur Munin pour les JRES 2013. C'est par ici.

Double bonus : pour le troll, on peut dire que systemd permettra d'écrire bien plus facilement des scripts d'init pour ce genre de problèmes.

EDIT : si les services ne démarrent pas, jetez un œil dans /var/log/munin et assurez-vous que les fichiers munin-cgi-html.log et munin-cgi-graph.log appartiennent bien à l'utilisateur et au groupe munin.