Использую graphite + statsd. Я пробовал этот способ, и он работает, но через некоторое время ведро воссоздается. Есть идеи, почему и как это остановить?
Davide Vernizzi 05
1
Как перезапустить statsd? Я не нашел statsd в списке процессов, но у меня возникла эта проблема.
Джефф
Следует отметить, что после удаления неиспользуемых путей сам Graphite перезапускать не нужно. Statsd - это отдельная проблема, перезапустите ее, но Graphite отлично справится с удаленными путями. Я подумал, что должен прояснить это, потому что в какой-то момент это было для меня камнем преткновения.
Флорин Андрей
А что насчет search_index? Его также следует удалить или обрезать?
mirelon
2
Нет ли возможности узнать, истек ли срок действия всех данных (например, maxRetention прошел с момента последнего обновления)? Чтобы удалить старые просроченные .wspфайлы?
docwhat
49
Я предполагаю, что это происходит на территории сбоя сервера, но я добавил следующее задание cron, чтобы удалить наши старые метрики, которые не записывались более 30 дней (например, облачных экземпляров, которые были удалены):
Почти во всех современных системах Unix это должно быть возможно конденсировать с помощью функции поиска встроенных команд - напримерfind /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
Крис Адамс
4
К вашему сведению, в ubuntu путь / var / lib / graphite /
Whisper
Есть ли причина, по которой мы не можем использовать tmpreaper для этого?
Зеки
7
Как отмечали люди, удаление файлов - это лучший способ. Расширяя предыдущие ответы, я создал этот скрипт, который удаляет все файлы, срок хранения которых превышает максимальный. Запускайте его как cronjobдостаточно регулярно.
#!/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
Несколько моментов, о которых следует помнить - whisper-infoвызов довольно тяжелый. Чтобы уменьшить количество обращений к нему, я добавил константу MINRET, так что ни один файл не будет рассматриваться для удаления, пока ему не исполнится 1 день (24 * 60 * 60 секунд) - настройте в соответствии с вашими потребностями. Вероятно, есть другие вещи, которые можно сделать, чтобы разделить работу или в целом повысить ее эффективность, но в этом пока не было необходимости.
Ответы:
В настоящее время удаление файлов из / opt / graphite / storage / Whisper / является правильным способом очистки данных шепота.
Что касается утомительной стороны процесса, вы можете использовать команду find, если есть определенный шаблон, который вы пытаетесь удалить.
Аналогичный вопрос на answers.launchpad.net/graphite
источник
.wsp
файлы?Я предполагаю, что это происходит на территории сбоя сервера, но я добавил следующее задание cron, чтобы удалить наши старые метрики, которые не записывались более 30 дней (например, облачных экземпляров, которые были удалены):
Это приведет к удалению каталогов с действительными данными.
Первый:
А затем удалите пустые каталоги
Этот последний шаг следует повторить, потому что могут остаться новые пустые каталоги.
источник
find /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
Как отмечали люди, удаление файлов - это лучший способ. Расширяя предыдущие ответы, я создал этот скрипт, который удаляет все файлы, срок хранения которых превышает максимальный. Запускайте его как
cronjob
достаточно регулярно.Несколько моментов, о которых следует помнить -
whisper-info
вызов довольно тяжелый. Чтобы уменьшить количество обращений к нему, я добавил константу MINRET, так что ни один файл не будет рассматриваться для удаления, пока ему не исполнится 1 день (24 * 60 * 60 секунд) - настройте в соответствии с вашими потребностями. Вероятно, есть другие вещи, которые можно сделать, чтобы разделить работу или в целом повысить ее эффективность, но в этом пока не было необходимости.источник
Must specify a directory to clean
это сообщение об ошибке. Как таковое, оно должно быть написано в правильном месте:echo "Must ..." >&2
.