Как очистить данные графитового шепота?

Я хочу удалить данные о графике хранения графита, но в графитовых документах ничего нет.

Один из способов - удалить файлы в /opt/graphite...../whispers/stats... вручную.

Но это утомительно, так как мне это сделать?

Ответ 1

в настоящее время удаляет файлы из /opt/graphite/storage/whisper/ - это правильный способ удаления данных шепота.

Что касается утомительной стороны процесса, вы можете использовать команду find, если есть определенный шаблон, который пытается удалить.

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

Подобный вопрос на answer.launchpad.net/graphite

Ответ 2

Я предполагаю, что это происходит на территории Server Fault, но я добавил следующее задание cron для удаления старых показателей, которые не были записанных более 30 дней (например, облачных экземпляров, которые были расположенные):

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

Это приведет к удалению каталогов, имеющих достоверные данные.

Во-первых:

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

И затем удалите пустые dirs

find . -type d -empty | xargs rmdir

Этот последний шаг должен быть повторен, поскольку могут быть оставлены новые пустые каталоги.

Ответ 3

Как отмечают люди, удаление файлов - это путь. Расширяясь в предыдущих ответах, я сделал этот script, который удаляет любой файл, который превысил его максимальный возраст хранения. Регулярно выполняйте его как 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

Несколько бит, о которых нужно знать - вызов whisper-info довольно тяжелый. Чтобы уменьшить количество обращений к нему, я поставил константу MINRET, так что ни один файл не будет рассматриваться для удаления до тех пор, пока он не станет 1-дневным (24 * 60 * 60 секунд) - настройте его в соответствии с вашими потребностями. Возможно, есть и другие вещи, которые можно сделать для того, чтобы ошпарить работу или вообще повысить ее эффективность, но мне еще не нужно было этого делать.