graphite - una - ¿Cómo limpiar los datos del susurro de grafito?
como quitar la tinta de lapicero de un libro (3)
Quiero eliminar los datos del susurro de almacenamiento del grafito, pero no hay nada en los documentos de grafito.
Una forma de hacerlo es borrar los archivos en /opt/graphite...../whispers/stats...
manualmente.
Pero esto es tedioso, ¿cómo lo hago?
Actualmente, eliminar los archivos de / opt / grafite / storage / whisper / es la forma correcta de eliminar los datos de susurro.
En cuanto al lado tedioso del proceso, podrías usar el comando find si hay un cierto patrón que intentas eliminar.
find / opt / grafite / storage / whisper -name loadavg.wsp -delete
Como han señalado las personas, eliminar los archivos es el camino a seguir. Ampliando las respuestas anteriores, hice esta secuencia de comandos que elimina cualquier archivo que haya excedido su edad máxima de retención. Ejecútelo como un cronjob
bastante regularidad.
#!/bin/bash
d=$1
now=$(date +%s)
MINRET=86400
if [ -z "$d" ]; then
echo "Must specify a directory to clean"
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
Un par de cosas para tener en cuenta: la llamada de whisper-info
es bastante pesada. Para reducir el número de llamadas, puse MINRET constante, para que no se considere la eliminación de ningún archivo hasta que tenga 1 día (24 * 60 * 60 segundos) - ajústelo para que se ajuste a sus necesidades. Probablemente haya otras cosas que se pueden hacer para fragmentar el trabajo o, en general, mejorar su eficiencia, pero todavía no lo he necesitado.
Supongo que esto irá al territorio de Server Fault, pero agregué el siguiente trabajo cron para eliminar nuestras antiguas métricas que no se han escrito durante más de 30 días (por ejemplo, de instancias de nube que se han eliminado):
find /mnt/graphite/storage -mtime +30 | grep -E / "/mnt/graphite/storage/whisper/collectd/app_name/[^/]*" -o / | uniq | xargs rm -rf
Esto eliminará directorios que tengan datos válidos.
Primero:
find whisperDir -mtime +30 -type f | xargs rm
Y luego eliminar los directorios vacíos
find . -type d -empty | xargs rmdir
Este último paso debe repetirse, ya que pueden quedar nuevos directorios vacíos.