Graphite : nettoyer les données Whisper

Whisper est la base de données utilisée par Graphite (à travers le démon Carbon) pour stocker les métriques accessibles classiquement par Grafana. Whisper est une base de données à taille fixe, similaire au produit RRD. Chaque nouveau métrique entraine la création d’un fichier possédant l’extension .wsp. Voici un exemple de fichier créé sous RedHat pour un métrique de type « CPU Idle » envoyé par collectd :

/var/lib/carbon/whisper/<prefix>/<server>/<suffix>/cpu-0/cpu-idle.wsp

Il n’y a pas de nettoyage automatique des métriques. Dans le cas d’une infrastructure de type cloud par exemple, la liste des métriques peut s’allonger indéfiniment au rythme des créations de nouvelles instances, entrainant une consommation de stockage tout aussi importante qu’inutile. Le nettoyage va consister simplement à supprimer les fichiers Whisper. J’utilise pour ma part cette routine :

# find /var/lib/carbon/whisper/ -type f -mtime +7 -name \*.wsp -delete
# find /var/lib/carbon/whisper/ -depth -type d -empty -delete

La première commande supprime tous les fichiers Whisper non modifiés depuis plus de 7 jours. Mon intervalle de collecte étant de 1 minute, ça laisse de la marge pour d’éventuels problèmes ponctuels.
La deuxième commande supprime les dossiers rendus vides par le nettoyage des fichiers.

Je pose cette routine dans un fichier cron sous /etc/cron.d/whisper-cleaner pour un nettoyage quotidien :

# cat /etc/cron.d/whisper-cleaner
0 9 * * * root (find /var/lib/carbon/whisper/ -type f -mtime +7 -name \*.wsp -delete; find /var/lib/carbon/whisper/ -depth -type d -empty -delete)

Laisser un commentaire