[graphite] 흑연 속삭임의 데이터를 정리하는 방법은 무엇입니까?

흑연의 저장소 속삭임의 데이터를 삭제하고 싶지만 흑연 문서에는 아무것도 없습니다.

내가 한 한 가지 방법은 파일을 /opt/graphite...../whispers/stats...수동으로 삭제하는 것 입니다.

그러나 이것은 지루한데 어떻게해야합니까?



답변

현재 / opt / graphite / storage / whisper /에서 파일을 삭제하는 것이 귓속말 데이터를 삭제하는 올바른 방법입니다.

프로세스의 지루한 측면에 관해서는 제거하려는 특정 패턴이 있으면 find 명령을 사용할 수 있습니다.

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

answers.launchpad.net/graphite에 유사한 질문


답변

이것이 Server Fault 영역으로 이동한다고 가정하지만 다음 크론 작업을 추가하여 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

그런 다음 빈 디렉토리를 삭제하십시오.

find . -type d -empty | xargs rmdir

새 빈 디렉토리가 남을 수 있으므로이 마지막 단계를 반복해야합니다.


답변

사람들이 지적했듯이 파일을 제거하는 것이 좋습니다. 이전 답변을 확장하여 최대 보존 기간을 초과 한 파일을 제거하는이 스크립트를 만들었습니다. 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 초)이 될 때까지 삭제 대상으로 간주되지 않도록합니다. 필요에 맞게 조정하십시오. 작업을 분할하거나 일반적으로 효율성을 개선하기 위해 수행 할 수있는 다른 작업이있을 수 있지만 아직 그럴 필요는 없었습니다.


답변