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


89

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

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

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


1
삭제 후 다시 나타나는 경우 다음 질문을 확인하십시오. stackoverflow.com/questions/15501677/…
knocte

답변:


72

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

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

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

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


3
저는 graphite + statsd를 사용하고 있습니다. 나는 이런 식으로 시도했지만 작동하지만 잠시 후 버킷이 다시 생성됩니다. 왜 그리고 어떻게 멈추는 지 아십니까?
다비드 Vernizzi

1
statsd를 어떻게 다시 시작합니까? 프로세스 목록에서 통계를 찾을 수 없지만이 문제가 있습니다.
제프

사용하지 않는 경로를 삭제 한 후에는 Graphite 자체를 다시 시작할 필요가 없습니다. Statsd는 별도의 문제이므로 계속해서 다시 시작하지만 Graphite는 삭제 된 경로를 잘 처리합니다. 언젠가는 저에게 걸림돌이 되었기 때문에 이것을 명확히해야한다고 생각했습니다.
Florin Andrei

search_index는 어떻습니까? 또한 삭제하거나 잘라야합니까?
mirelon

2
모든 데이터가 만료되었는지 확인할 수있는 방법이 없습니까 (예 : 마지막 업데이트 이후 maxRetention이 경과 됨)? 만료 된 오래된 .wsp파일 을 제거하려면 ?
docwhat 19

49

이것이 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

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


24
거의 모든 최신 Unix 시스템에서 find 내장 기능을 사용하여 압축 할 수 있어야합니다. 예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
참고로 우분투에서 경로는 / var / lib / graphite / whisper입니다
knocte

이를 위해 tmpreaper를 사용할 수없는 이유가 있습니까?
Zeki

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 초)이 될 때까지 삭제 대상으로 간주되지 않도록합니다. 필요에 맞게 조정하십시오. 작업을 분할하거나 일반적으로 효율성을 개선하기 위해 수행 할 수있는 다른 작업이있을 수 있지만 아직 그럴 필요는 없었습니다.


nit : Must specify a directory to clean오류 메시지입니다. 따라서 올바른 위치에 작성해야합니다 echo "Must ..." >&2..
William Pursell

이것은 훌륭한 tyvm입니다!
제로
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.