Passer Munin à la minute

Munin logo

L’outil de métrologie Munin, dont le site est http://munin-monitoring.org/ est bien pratique pour faire des tests. Lorsqu’on a une infrastructure à gérer avec des dizaines, centaines ou milliers de noeuds, on fait de la métrologie à 5 minutes. C’est à dire qu’on relève les valeurs de chaque noeud toutes les 5 minutes. De manière synchrone ou pas. Généralement on a de la métrologie, de la surveillance et des alertes. Donc souvent un outil assez sensible dont on ne peut pas modifier les réglages pour faire des tests.

Donc si on a besoin d’accélérer la fréquence de récupération des valeurs pour un test de charge ou de rajouter un noeud pour 2 jours, d’effacer des valeurs, de bricoler des graphes, on est coincé.

Alors, dans ce cas, rien de mieux qu’un serveur Munin dédié aux tests et indépendant de l’infrastructure. Surtout si on veut gagner du temps et avoir des réponses rapides avec des métriques à la minute.

L’outil Munin est très léger, c’est du scripting Perl, les plugins sont très simples à faire fonctionner, on ne consomme pas trop de ressources. C’est l’outil idéal pour mesurer les ressources pendant les tests de charge.

Descendre le monitoring à la minute est essentiel, car pour les tests de charge, si on veut des graphes significatifs, il faut une bonne dizaine de points. Avec des points toutes les 5 minutes, on arrive facilement à 1 heure par test. Donc faire des tests dans ces conditions devient excessivement long, car avant d’avoir 2 ou 3 belles courbes significatives, il faudra lancer au moins une dizaine de tests…. Une opération de deux jours au moins.

Par contre, si on passe à la minute, en 15 minutes on a des graphes. En une journée on aura peut-être terminé nos tests, avec l’impression d’avoir moins perdu son temps, surtout lorsque les tests ne se passent pas bien et que la mise au point est délicate !

Que faut-il modifier pour passer Munin à une minute de fréquence ?

La source de cet article provient de Daniel Watrous : One minute sampling. Avec notre version de Munin par contre, on ne touche pas les noeuds (munin-node).

Dans notre cas, le serveur Munin va chercher les métriques, stocke les valeurs dans les fichiers RRD et fait les graphes. Il n’y a rien à changer sur les noeuds. On ne modifie que le serveur Munin.

La version de Munin utilisée ici est la 2.0.49 fournie par la distribution Debian Buster.

Etape 1 : modifier munin.conf

Dans le fichier /etc/munin/munin.conf il faut ajouter les 2 lignes suivantes :

Etape 2 : modifier le cron

Il faut passer le cron de récupération des valeurs des noeuds à la minute. Modifier la ligne du fichier /etc/cron.d/munin comme suit :

en

de manière à passer de 1 fois toutes les 5 minutes à toutes les minutes.

Etape 3 : supprimer les RRD

Les fichiers RRD sont les fichiers qui contiennent les valeurs des métriques des noeuds graphés par Munin. Comme les RRD stockent la fréquence des données en entête, une fois le fichier créé, on ne peut plus modifier cette fréquence. Il faut donc effacer les fichiers RRD des noeuds pour lesquels on va passer à une minute. Ces fichiers se trouvent dans le répertoire /var/lib/munin/nom_du_domaine/

Si on efface ces fichier RRD, on perd tout l’historique pour les noeuds qui se trouvent dans le domaine. On comprend pourquoi il vaut mieux ne pas faire ces opérations sur un serveur qui gère la métrologie d’une infrastructure de production.

C’est la commande /usr/bin/munin-cron qui se lance toute les minutes sur le serveur Munin qui crée les fichiers RRD et qui va stocke les valeurs.

On peut vérifier que les fichiers RRD sont corrects en affichant les informations qui se trouvent à l’intérieur, en particulier le step qui doit être à 60 :

Etape 4 : relancer le serveur Munin

Il suffit de lancer la commande suivante pour relancer Munin

et d’attendre quelques minutes avant de regarder les graphes qui doivent afficher des variations à la minute :

Graphe de requêtes MySQL à la minute

Si on fait un test de charge avec l’outil JMeter, qu’on a un « Thread plan » de 100 threads avec une montée de 0 à 100 en 10 minutes et un plateau de 5 minutes comme ci-dessous :

Nombre de threads en fonction du temps

on récupère des graphes comme celui-ci en moins de vingt minutes, avec la granularité à la minute comme JMeter :

Graphe d’utilisation de la CPU à la minute