2012-03-06 16 views
79

Chcę usunąć dane szperacza magazynu grafitu, ale w dokumentach graficznych niczego nie ma.Jak wyczyścić dane szarego grafitu?

Jednym ze sposobów zrobiłem jest usuwanie plików w /opt/graphite...../whispers/stats... ręcznie.

Ale to jest uciążliwe, więc jak mogę to zrobić?

+1

w przypadku, gdy pojawią się ponownie po usunięciu, sprawdź to inne pytanie: http://stackoverflow.com/questions/15501677/deleted-empty-graphite-whisper-files-automatically-re-generating – knocte

Odpowiedz

67

obecnie usuwanie plików z/opt/grafitowy/Przechowywanie/szept/jest poprawny sposób, aby usunąć dane szeptem.

chodzi o żmudne strony procesu, można użyć polecenia find jeśli istnieje pewien wzór, który próbujesz usunąć.

find/opt/grafit/magazynowanie/szept -name loadavg.wsp Usuń nie

Similar Question on answers.launchpad.net/graphite

+2

Używam grafitu + statsd. Próbowałem w ten sposób i działa, ale po chwili wiadro zostało odtworzone. Każdy pomysł, dlaczego i jak go zatrzymać? –

+1

Jak zrestartować statsd? Nie znajduję statystyk na liście procesów, ale mam ten problem. – Jeff

+0

Należy zauważyć, że po usunięciu nieużywanych ścieżek sam Grafit nie musi być ponownie uruchamiany. Statsd to osobny problem, śmiało i ponownie go uruchom, ale Graphite poradzi sobie z usuniętymi ścieżkami. Myślałem, że powinienem to wyjaśnić, ponieważ w pewnym momencie było to dla mnie przeszkodą. –

43

Przypuszczam, że to się dzieje na terytorium Server wina, ale dodałem następujące zadanie cron do usuwania starych metryk, które nie zostały zapisane w postaci na okres ponad 30 dni (np. wystąpień w chmurze, które zostały unieważnione):

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

Spowoduje to usunięcie katalogów z prawidłowymi danymi.

pierwsze:

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

a następnie usunąć puste katalogi

find . -type d -empty | xargs rmdir 

Ten ostatni etap powinien zostać powtórzony, ponieważ mogą być nowe pustych katalogów będzie po lewej stronie.

+20

W prawie wszystkich współczesnych systemach uniksowych powinno być możliwe skondensowanie za pomocą wbudowanych funkcji find - np. 'find/opt/graphite/storage/whisper -type f -mtime +120 -name \ *. wsp -delete; find/opt/graphite/storage/whisper -depth -type d -empty -delete' –

+4

FYI w ubuntu ścieżka jest/var/lib/graphite/whisper – knocte

+0

Czy jest jakiś powód, dla którego nie możemy użyć tmpreaper aby to zrobić? – Zeki

3

Jak ludzie zwracają uwagę, usuwanie plików jest droga. Rozszerzając poprzednie odpowiedzi, stworzyłem skrypt, który usuwa każdy plik, który przekroczył swój maksymalny wiek przechowywania. Prowadź go regularnie jako cronjob.

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

Kilka bitów być świadomi - rozmowa whisper-info jest dość wysokiej gramaturze. Aby zmniejszyć liczbę połączeń do niego, umieściłem MINRET na stałym poziomie, aby żaden plik nie był uważany za skasowany, dopóki nie skończył pierwszego dnia (24 * 60 * 60 sekund) - dostosuj go do swoich potrzeb. Są prawdopodobnie inne rzeczy, które można zrobić, aby odrzucić pracę lub ogólnie poprawić jej wydajność, ale nie miałem jeszcze takiej potrzeby.