흑연의 저장소 속삭임의 데이터를 삭제하고 싶지만 흑연 문서에는 아무것도 없습니다.
내가 한 한 가지 방법은 파일을 /opt/graphite...../whispers/stats...
수동으로 삭제하는 것 입니다.
그러나 이것은 지루한데 어떻게해야합니까?
흑연의 저장소 속삭임의 데이터를 삭제하고 싶지만 흑연 문서에는 아무것도 없습니다.
내가 한 한 가지 방법은 파일을 /opt/graphite...../whispers/stats...
수동으로 삭제하는 것 입니다.
그러나 이것은 지루한데 어떻게해야합니까?
답변:
현재 / opt / graphite / storage / whisper /에서 파일을 삭제하는 것이 귓속말 데이터를 삭제하는 올바른 방법입니다.
프로세스의 지루한 측면에 관해서는 제거하려는 특정 패턴이 있으면 find 명령을 사용할 수 있습니다.
find / opt / graphite / storage / whisper -name loadavg.wsp -delete
.wsp
파일 을 제거하려면 ?
이것이 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
새 빈 디렉토리가 남을 수 있으므로이 마지막 단계를 반복해야합니다.
find /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
사람들이 지적했듯이 파일을 제거하는 것이 좋습니다. 이전 답변을 확장하여 최대 보존 기간을 초과 한 파일을 제거하는이 스크립트를 만들었습니다. 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 초)이 될 때까지 삭제 대상으로 간주되지 않도록합니다. 필요에 맞게 조정하십시오. 작업을 분할하거나 일반적으로 효율성을 개선하기 위해 수행 할 수있는 다른 작업이있을 수 있지만 아직 그럴 필요는 없었습니다.
Must specify a directory to clean
오류 메시지입니다. 따라서 올바른 위치에 작성해야합니다 echo "Must ..." >&2
..