Wie bereinige ich die Daten des Graphitflüsters?


89

Ich möchte die Daten des Speicherflüsters des Graphits löschen, aber die Graphitdokumente enthalten nichts.

Eine Möglichkeit, die ich gemacht habe, ist das /opt/graphite...../whispers/stats...manuelle Löschen der Dateien .

Aber das ist langweilig. Wie mache ich das?


1
Falls sie nach dem Löschen erneut angezeigt werden
knocte

Antworten:


72

Das Löschen der Dateien aus / opt / graphite / storage /whisper / ist derzeit der richtige Weg, um Flüsterdaten zu löschen.

Was die mühsame Seite des Prozesses betrifft, können Sie den Befehl find verwenden, wenn es ein bestimmtes Muster gibt, das Sie entfernen möchten.

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

Ähnliche Frage auf answers.launchpad.net/graphite


3
Ich benutze Graphit + Statistik. Ich habe es auf diese Weise versucht und es funktioniert, aber nach einer Weile wird der Eimer neu erstellt. Irgendeine Idee warum und wie man es aufhält?
Davide Vernizzi

1
Wie starte ich statsd neu? Ich finde keine Statistik in der Liste der Prozesse, aber ich habe dieses Problem.
Jeff

Es ist zu beachten, dass Graphite selbst nach dem Löschen der nicht verwendeten Pfade nicht neu gestartet werden muss. Statsd ist ein separates Problem. Starten Sie es neu, aber Graphite wird gelöschte Pfade problemlos verarbeiten. Ich dachte, ich sollte das klarstellen, weil es irgendwann ein Stolperstein für mich war.
Florin Andrei

Was ist mit search_index? Sollte es auch gelöscht oder abgeschnitten werden?
Mirelon

2
Gibt es keine Möglichkeit festzustellen, ob alle Daten abgelaufen sind (z. B. maxRetention ist seit dem letzten Update vergangen)? Alte abgelaufene .wspDateien entfernen ?
docwhat

49

Ich nehme an, dass dies in das Gebiet der Serverfehler geht, aber ich habe den folgenden Cron-Job hinzugefügt, um alte Metriken von uns zu löschen, in die seit über 30 Tagen nicht mehr geschrieben wurde (z. B. von Cloud-Instanzen, die entsorgt wurden):

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

Dadurch werden Verzeichnisse mit gültigen Daten gelöscht.

Zuerst:

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

Und dann leere Verzeichnisse löschen

find . -type d -empty | xargs rmdir

Dieser letzte Schritt sollte wiederholt werden, da möglicherweise neue leere Verzeichnisse übrig bleiben.


24
Auf fast allen modernen Unix - Systemen soll dies möglich sein Fund builtins kondensieren mit - zum Beispielfind /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
Chris Adams


Gibt es einen Grund, warum wir tmpreaper nicht verwenden können, um dies zu tun?
Zeki

7

Wie die Leute bereits betont haben, ist das Entfernen der Dateien der richtige Weg. Ausgehend von früheren Antworten habe ich dieses Skript erstellt, mit dem alle Dateien entfernt werden, die ihr maximales Aufbewahrungsalter überschritten haben. Führen Sie es cronjobziemlich regelmäßig aus.

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

Ein paar Kleinigkeiten zu beachten - der whisper-infoAnruf ist ziemlich schwer. Um die Anzahl der Aufrufe zu verringern, habe ich die MINRET-Konstante eingegeben, damit keine Datei zum Löschen berücksichtigt wird, bis sie 1 Tag alt ist (24 * 60 * 60 Sekunden) - passen Sie sie Ihren Anforderungen an. Es gibt wahrscheinlich andere Dinge, die getan werden können, um den Job zu zerstören oder seine Effizienz allgemein zu verbessern, aber ich musste es noch nicht tun.


nit: Must specify a directory to cleanist eine Fehlermeldung. Als solches sollte es an der richtigen Stelle geschrieben werden : echo "Must ..." >&2.
William Pursell

das ist toll tyvm!
Xero
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.