Używam grafitu + statsd. Próbowałem w ten sposób i działa, ale po chwili wiadro jest odtwarzane. Masz jakiś pomysł, dlaczego i jak to zatrzymać?
Davide Vernizzi,
1
Jak zrestartować statsd? Nie znajduję statystyk na liście procesów, ale mam ten problem.
Jeff
Należy zaznaczyć, że po usunięciu nieużywanych ścieżek samego Graphite nie trzeba restartować. Statsd to osobny problem, śmiało i zrestartuj go, ale Graphite poradzi sobie z usuniętymi ścieżkami. Pomyślałem, że powinienem to wyjaśnić, ponieważ w pewnym momencie było to dla mnie przeszkodą.
Florin Andrei,
A co z search_index? Czy powinien być również usunięty czy obcięty?
mirelon
2
Czy nie ma sposobu, aby sprawdzić, czy wszystkie dane wygasły (np. MaxRetention minęło od ostatniej aktualizacji)? Usunąć stare, wygasłe .wsppliki?
docwhat
49
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):
W prawie wszystkich nowoczesnych systemach uniksowych powinno być możliwe skondensowanie tego 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
Chris Adams,
4
FYI w Ubuntu ścieżka to / var / lib / graphite / whisper
knocte
Czy istnieje powód, dla którego nie możemy użyć do tego programu tmpreaper?
Zeki
7
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 cronjobdość 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-inforozmowa 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ć.
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ąć.
Podobne pytanie na answer.launchpad.net/graphite
źródło
.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):
Spowoduje to usunięcie katalogów, które mają prawidłowe dane.
Pierwszy:
A następnie usuń puste książki
Ten ostatni krok należy powtórzyć, ponieważ mogą być nowe puste katalogi.
źródło
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.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ć.źródło
Must specify a directory to clean
to komunikat o błędzie. Jako takie powinny być zapisywane w odpowiednim miejscu:echo "Must ..." >&2
.