如何清理石墨耳语的数据?

我想删除石墨储存耳语的数据,但石墨文档中没有任何内容。

我做的一个方法是手动删除/opt/graphite...../whispers/stats...

但是这很乏味,那我该怎么做呢?

目前从/ opt / graphite / storage / whisper /中删除文件是删除耳语数据的正确方法。

至于这个过程的乏味的一面,如果有一个你想要删除的模式,你可以使用find命令。

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

类似的问题在answers.launchpad.net/graphite

我想这是进入服务器故障的领土,但我添加了下面的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 

最后一步应该重复,因为可能会留下新的空目录。

正如人们已经指出的那样,删除文件是要走的路。 扩展以前的答案,我做了这个脚本,删除任何超过其最大保留时间的文件。 相当有规律地运行它作为一个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调用是相当重量级的。 为了减less对它的调用数量,我已经把MINRET常量,以便没有文件将被视为删除,直到它是1天(24 * 60 * 60秒) – 调整,以适应您的需求。 可能还有其他的事情可以分散工作或通常提高效率,但我还没有需要。