Je veux effacer les données du stockage du graphite, mais il n'y a rien dans la documentation en graphite.
Une façon que j'ai fait est de supprimer les fichiers à /opt/graphite...../whispers/stats...
manuellement.
Mais c'est fastidieux, alors comment puis-je le faire?
supprimer actuellement les fichiers de/opt/graphite/storage/whisper/est le moyen correct de supprimer les chuchotements.
En ce qui concerne le côté fastidieux du processus, vous pouvez utiliser la commande find si vous tentez de supprimer un certain motif.
find/opt/graphite/storage/whisper -name loadavg.wsp -delete
Je suppose que cela concerne le territoire de Server Fault, mais j’ai ajouté le travail cron suivant pour supprimer les anciennes métriques sur lesquelles nous n’avons pas été écrites depuis plus de 30 jours (par exemple, les instances de cloud qui ont été supprimées):
find /mnt/graphite/storage -mtime +30 | grep -E \ "/mnt/graphite/storage/whisper/collectd/app_name/[^/]*" -o \ | uniq | xargs rm -rf
Cela supprimera les répertoires contenant des données valides.
Première:
find whisperDir -mtime +30 -type f | xargs rm
Et puis supprimez les répertoires vides
find . -type d -empty | xargs rmdir
Cette dernière étape doit être répétée, car il se peut que de nouveaux répertoires vides soient laissés.
Comme les gens l'ont souligné, la suppression des fichiers est la voie à suivre. En développant les réponses précédentes, j'ai créé ce script qui supprime tout fichier ayant dépassé son âge de conservation maximal. Exécutez-le en tant que cronjob
assez régulièrement.
#!/bin/bash
d=$1
now=$(date +%s)
MINRET=86400
if [ -z "$d" ]; then
echo "Must specify a directory to clean" >&2
exit 1
fi
find $d -name '*.wsp' | while read w; do
age=$((now - $(stat -c '%Y' "$w")))
if [ $age -gt $MINRET ]; then
retention=$(whisper-info.py $w maxRetention)
if [ $age -gt $retention ]; then
echo "Removing $w ($age > $retention)"
rm $w
fi
fi
done
find $d -empty -type d -delete
Quelques bits à prendre en compte - le whisper-info
call est assez lourd. Pour réduire le nombre d'appels, j'ai ajouté la constante MINRET, afin qu'aucun fichier ne soit supprimé avant 1 jour (24 * 60 * 60 secondes) - réglez-le en fonction de vos besoins. Il y a probablement d'autres choses à faire pour partager le travail ou en améliorer généralement l'efficacité, mais je n'en avais pas encore eu besoin.