Come ripulire i dati del sussurro di grafite?


89

Voglio eliminare i dati del sussurro di archiviazione della grafite ma non c'è nulla nei documenti di grafite.

Un modo che ho fatto è stato eliminare /opt/graphite...../whispers/stats...manualmente i file in .

Ma questo è noioso, quindi come lo faccio?


1
nel caso in cui essi appaiono ancora una volta dopo l'eliminazione di loro, controllare quest'altra domanda: stackoverflow.com/questions/15501677/...
knocte

Risposte:


72

attualmente l'eliminazione dei file da / opt / graphite / storage / whisper / è il modo corretto per eliminare i dati whisper.

Per quanto riguarda il lato noioso del processo, potresti usare il comando find se c'è un certo pattern che stai cercando di rimuovere.

trova / opt / graphite / storage / whisper -name loadavg.wsp -delete

Domanda simile su answer.launchpad.net/graphite


3
Sto usando grafite + statsd. Ho provato in questo modo e funziona, ma dopo un po 'il secchio viene ricreato. Qualche idea sul perché e su come fermarlo?
Davide Vernizzi

1
Come riavvii statsd? Non trovo una statistica nell'elenco dei processi, ma sto riscontrando questo problema.
Jeff

Va notato che dopo aver eliminato i percorsi inutilizzati, Graphite stessa non deve essere riavviata. Statsd è un problema separato, vai avanti e riavvialo, ma Graphite gestirà perfettamente i percorsi eliminati. Ho pensato di dover chiarire questo perché a un certo punto è stato un ostacolo per me.
Florin Andrei

E per search_index? Dovrebbe essere anche cancellato o troncato?
mirelon

2
Non c'è modo di vedere se tutti i dati sono scaduti (ad esempio maxRetention è passato dall'ultimo aggiornamento)? Rimuovere i vecchi .wspfile scaduti ?
docwhat

49

Suppongo che questo stia andando nel territorio Server Fault, ma ho aggiunto il seguente cron job per eliminare le nostre vecchie metriche che non sono state scritte per oltre 30 giorni (ad esempio di istanze cloud che sono state eliminate):

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

Questo eliminerà le directory che hanno dati validi.

Primo:

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

Quindi elimina le directory vuote

find . -type d -empty | xargs rmdir

Quest'ultimo passaggio dovrebbe essere ripetuto, perché potrebbero essere lasciate nuove directory vuote.


24
Su quasi tutti i moderni sistemi Unix questo dovrebbe essere possibile condensare usando find builtin - ad esempiofind /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
Chris Adams

4
FYI in Ubuntu il percorso è / var / lib / graphite / whisper
knocte

C'è una ragione per cui non possiamo usare tmpreaper per farlo?
Zeki

7

Come le persone hanno sottolineato, rimuovere i file è la strada da percorrere. Espandendo le risposte precedenti, ho creato questo script che rimuove qualsiasi file che ha superato la sua età massima di conservazione. Eseguilo cronjobabbastanza regolarmente.

#!/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

Un paio di bit di cui essere consapevoli: la whisper-infochiamata è piuttosto pesante. Per ridurre il numero di chiamate ad esso ho inserito la costante MINRET, in modo che nessun file venga considerato per l'eliminazione fino a quando non è vecchio di 1 giorno (24 * 60 * 60 secondi) - regola in base alle tue esigenze. Probabilmente ci sono altre cose che possono essere fatte per frammentare il lavoro o in generale migliorarne l'efficienza, ma non ne ho ancora avuto bisogno.


nit: Must specify a directory to cleanè un messaggio di errore. In quanto tale, dovrebbe essere scritto al posto giusto: echo "Must ..." >&2.
William Pursell

questo è un grande tyvm!
xero
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.