Chcę usunąć dane szeptu pamięci grafitu, ale w dokumentacji grafitu nie ma nic.
Jednym ze sposobów jest /opt/graphite...../whispers/stats...
ręczne usunięcie plików pod adresem .
Ale to jest uciążliwe, więc jak mam to zrobić?
Chcę usunąć dane szeptu pamięci grafitu, ale w dokumentacji grafitu nie ma nic.
Jednym ze sposobów jest /opt/graphite...../whispers/stats...
ręczne usunięcie plików pod adresem .
Ale to jest uciążliwe, więc jak mam to zrobić?
Odpowiedzi:
obecnie usuwanie plików z / opt / graphite / storage / whisper / jest prawidłowym sposobem na usunięcie danych whisper.
Jeśli chodzi o żmudną stronę procesu, możesz użyć polecenia find, jeśli istnieje pewien wzorzec, który próbujesz usunąć.
find / opt / graphite / storage / whisper -name loadavg.wsp -delete
.wsp
pliki?
Przypuszczam, że idzie to na terytorium błędów serwera, ale dodałem następujące zadanie cron, aby usunąć nasze stare metryki, które nie były zapisywane przez ponad 30 dni (np. Instancje chmury, które zostały usunięte):
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, które mają prawidłowe dane.
Pierwszy:
find whisperDir -mtime +30 -type f | xargs rm
A następnie usuń puste książki
find . -type d -empty | xargs rmdir
Ten ostatni krok należy powtórzyć, ponieważ mogą być nowe puste katalogi.
find /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
Jak ludzie zauważyli, usunięcie plików jest właściwą drogą. Rozwijając poprzednie odpowiedzi, stworzyłem ten skrypt, który usuwa każdy plik, który przekroczył maksymalny wiek przechowywania. Uruchom go jako cronjob
dość regularnie.
#!/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
Kilka bitów, o których należy pamiętać - whisper-info
rozmowa jest dość ciężka. Aby zmniejszyć liczbę wywołań do niego, wprowadziłem stałą MINRET, dzięki czemu żaden plik nie będzie rozpatrywany do usunięcia, dopóki nie będzie miał 1 dnia (24 * 60 * 60 sekund) - dostosuj do swoich potrzeb. Prawdopodobnie są inne rzeczy, które można zrobić, aby odciąć pracę lub ogólnie poprawić jej wydajność, ale jeszcze nie musiałem tego robić.
Must specify a directory to clean
to komunikat o błędzie. Jako takie powinny być zapisywane w odpowiednim miejscu: echo "Must ..." >&2
.