Réduction de la charge générée par munin
Récemment, j’ai installé munin sur un b3 pour surveiller une freebox. Le b3 étant ce qu’il ait, même si les plugins munin ne sont pas nombreux, la charge induite est importante. Cette charge est d’autant plus importante que l’installation par défaut de munin consiste à reconstruire les données et le site web toutes les 5 minutes. Sur le b3, cela prend presque 1 minute de tout faire. Mais dans cette minute, à peine 20 secondes servent à récolter les informations. Et cela est d’autant plus dommage que je ne consulte ces données qu’en de très rares occasions.
Du coup, j’ai décidé de revoir cette installation pour réduire la charge induite.
La solution officielle proposée par munin dans ce genre de situation consiste à passer par un mode cgi
.
De cette manière, la partie HTML (le site statique) et les graphes ne sont produits que lorsqu’un navigateur vient les consulter.
Mais cela nécessite d’aller configurer le serveur web pour activer le module CGI.
Considérant que mon intérêt pour ces données est j’ai préféré une solution basée sur la logique du cron, mais en décomposant les actions de mises à jour de munin de façon à :
- continuer à collecter les données toutes les 5 minutes,
- ne produire produire les graphes que toutes les heures.
Cela me semble tout à fait raisonnable vu mon utilisation des informations.
Pour ce faire, il faut éditer le fichier /etc/cron.d/munin
:
#*/5 * * * * munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi
*/5 * * * * munin if [ -x /usr/bin/munin-cron ]; then /usr/share/munin/munin-update; fi
1 * * * * munin if [ -x /usr/bin/munin-cron ]; then /usr/share/munin/munin-limits; fi
2 * * * * munin if [ -x /usr/bin/munin-cron ]; then nice /usr/share/munin/munin-html; fi
3 * * * * munin if [ -x /usr/bin/munin-cron ]; then nice /usr/share/munin/munin-graph --cron; fi
A noter que, pour éviter des effets de bords non souhaités, les scripts ne sont pas lancés dans la même minute, mais de manière étalée.