2012-03-06 7 views
79

Quiero eliminar los datos del susurro de almacenamiento del grafito, pero no hay nada en los documentos de grafito.¿Cómo limpiar los datos del susurro de grafito?

Una forma de hacerlo es eliminar los archivos en /opt/graphite...../whispers/stats... manualmente.

Pero esto es tedioso, entonces ¿cómo lo hago?

+1

en caso de que aparezcan nuevamente después de eliminarlos, consulte esta otra pregunta: http://stackoverflow.com/questions/15501677/deleted-empty-graphite-whisper-files-automatically-regenerating – knocte

Respuesta

67

Actualmente, eliminar los archivos de/opt/grafito/almacenamiento/susurro/es la forma correcta de eliminar datos de susurro.

En cuanto al lado tedioso del proceso, puede usar el comando buscar si hay un cierto patrón que está tratando de eliminar.

hallazgo/opt/grafito/almacenamiento/susurro -nombre loadavg.wsp -delete

Similar Question on answers.launchpad.net/graphite

+2

Estoy usando grafito + statsd. Lo intenté de esta manera y funciona, pero después de un tiempo se recrea el cubo. ¿Alguna idea de por qué y cómo detenerla? –

+1

¿Cómo reiniciar statsd? No encuentro un statsd en la lista de procesos, pero estoy teniendo este problema. – Jeff

+0

Debe tenerse en cuenta que después de eliminar las rutas no utilizadas, no es necesario reiniciar Graphite. Statsd es un problema aparte, adelante y reinícielo, pero Graphite se ocupará de las rutas eliminadas sin problemas. Pensé que debería aclarar esto porque fue un obstáculo para mí en algún momento. –

43

supongo que esto va en territorio servidor falla, pero añadí la siguiente tarea cron para eliminar métricas antiguas nuestras que no han sido escritas durante más de 30 días (por ejemplo, de instancias de nube que han sido dispuestas):

find /mnt/graphite/storage -mtime +30 | grep -E \ 
"/mnt/graphite/storage/whisper/collectd/app_name/[^/]*" -o \ 
| uniq | xargs rm -rf 

Esto eliminará los directorios que tengan datos válidos.

Primero:

find whisperDir -mtime +30 -type f | xargs rm 

a continuación, eliminar directorios vacíos

find . -type d -empty | xargs rmdir 

Este último paso se debe repetir, porque puede ser nuevos directorios vacíos será dejado.

+20

En casi todos los sistemas Unix modernos, esto debería poder condensarse usando find builtins, p. Ej. 'find/opt/grafite/storage/whisper -type f -mtime +120 -name \ *. wsp -delete; find/opt/graphite/storage/whisper -depth -type d -empty -delete' –

+4

FYI en ubuntu la ruta es/var/lib/graphite/whisper – knocte

+0

¿Hay alguna razón por la que no podamos usar tmpreaper para hacer esto? – Zeki

3

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 cronjob con 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 a tener en cuenta - la llamada whisper-info es bastante pesado. 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.

Cuestiones relacionadas