我想删除石墨的存储耳语数据,但石墨文档中没有任何内容。
我做的一种方法是手动删除/opt/graphite...../whispers/stats...
上的文件。
但这很乏味,所以我该怎么做?
目前正在删除/ opt / graphite / storage / whisper /中的文件是删除耳语数据的正确方法。
至于该过程的乏味一面,如果您尝试删除某种模式,则可以使用find命令。
找/ opt / graphite / storage / whisper -name loadavg.wsp -delete
我想这是进入服务器故障区域,但我添加了以下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
然后删除空目录
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秒)不会考虑删除任何文件 - 根据您的需要进行调整。可能还有其他事情可以完成工作或通常提高效率,但我还没有必要这样做。