Munin : le plugin Varnish sous Debian Buster

Munin logo

Munin est un outil bien pratique pour les tests de charge. Il est packagé par Debian dans sa version 2.0.49 avec des plugins pour quasiment tous les services. Ca tombe bien pour évaluer le comportement de Varnish, puisqu’on a un plugin Varnish présent dans le répertoire des plugins : /usr/share/munin/plugins/varnish_

Pour l’installer, rien de plus simple, il suffit de faire un lien symbolique sur un des « aspects » disponibles pour ce plugin, qu’on obtient par la commande :

Mais avant de pouvoir lancer cette commande pour connaître les « aspects » de ce plugin, il fallait déjà faire un lien symbolique, donc lire le contenu du plugin ! La on choisit l’aspect « transfer_rates ». Pour installer le plugin qui va fournir les « transfer_rates » de Varnish, il faut faire le lien suivant :

A cette étape, la configuration est prête pour tester le plugin. On lance la commande suivante pour vérifier les valeurs que renvoie le plugin :

Pas de réponse, on attend les ….. puis on obtient une erreur ! Cette erreur provient de varnishstat. Quand on lance varnishstat pourtant tout fonctionne :

Alors que se passe-t-il ? On essaie avec les options de débug :

Toujours la même erreur. En y regardant de plus près on s’aperçoit que le plugin est lancé avec l’euid 113 qui est l’id de l’utilisateur munin sur ma machine. Mais comme le process Varnish tourne sous l’utilisateur vcache, le plugin ne peut pas contacter Varnish, d’où l’erreur. La méthode pour corriger ce problème est de lancer le plugin Varnish avec l’utilisateur « vcache ». Pour ceci, on crée un fichier de configuration du plugin qui indique d’utiliser « vcache » :

Le plugin fonctionne, mais ne renvoie rien !!!
On tombe sur le bug : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=959812

En cherchant les plugins Varnish pour Munin, on trouve beaucoup de choses. Qui vont de Varnish 2 à Varnish 5. Mais sous Buster, on est en Varnish 6. Tous les plugins Varnish ont la même source, la version de 2009. Mais on ne sait pas exactement avec quelle version de Varnish ils fonctionnent. J’en ai essayé 3 différents, et sans aucun doute, le bon est celui-ci : https://gallery.munin-monitoring.org/plugins/munin-contrib/varnish5_/

Il faut récupérer le source, faire le lien dans le répertoire des plugins et mettre l’utilisateur « vcache » ou « root » dans la configuration. Là, j’ai utilisé le hit_rate comme « aspect » :

On a bien un résultat cette fois !
Remarque, le client_req est calculé comme la somme des 4 valeurs cache_*. Alors que la commande varnishstat renvoie un client_req de 9585 ! Cette dernière valeur représente toutes les requêtes reçues par Varnish, y compris les « pass ». Donc avec le plugin « varnish5_ » on n’a que les requêtes qui sont sensées être en cache. Ce qui est logique pour un calcul de hit ratio, mais qui ne montre pas la totalité des requêtes reçues.

Varnish hit rate ratio

On retrouve ci-dessus un hit ratio dont la somme des 4 composantes fait 100.


Références :
Munin
Paquet Munin pour Debian Buster