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

Aut*_*act 88 graphite

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

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

但这很乏味,所以我该怎么做?

小智 70

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

至于该过程的乏味一面,如果您尝试删除某种模式,则可以使用find命令.

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

关于answers.launchpad.net/graphite的类似问题

  • 我正在使用graphite + statsd.我尝试了这种方式并且它可以工作,但过了一段时间后,桶被重新创建.知道为什么以及如何阻止它? (3认同)
  • 是否无法查看所有数据是否都已过期(例如,自上次更新以来已通过maxRetention)?要删除旧的过期的.wsp文件? (2认同)

yon*_*avi 49

我想这是进入服务器故障区域,但我添加了以下cron作业来删除我们尚未写入超过30天的旧指标(例如已经处置的云实例):

find /mnt/graphite/storage -mtime +30 | grep -E \
"/mnt/graphite/storage/whisper/collectd/app_name/[^/]*" -o \
| uniq | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)

这将删除具有有效数据的目录.

第一:

find whisperDir -mtime +30 -type f | xargs rm 
Run Code Online (Sandbox Code Playgroud)

然后删除空目录

find . -type d -empty | xargs rmdir
Run Code Online (Sandbox Code Playgroud)

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

  • 在几乎所有现代Unix系统中,这应该可以使用find builtins来缩小 - 例如`find/opt/graphite/storage/whisper -type f -mtime +120 -name\*.wsp -delete; 找/ opt/graphite/storage/whisper -depth -type d -empty -delete` (24认同)
  • 在ubuntu中的路径是/ var/lib/graphite/whisper (4认同)

IBa*_*Bam 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
Run Code Online (Sandbox Code Playgroud)

需要注意几点 - whisper-info电话是非常重量级的.为了减少对它的调用次数,我将MINRET保持不变,这样在1天之前(24*60*60秒)不会考虑删除任何文件 - 根据您的需要进行调整.可能还有其他事情可以完成工作或通常提高效率,但我还没有必要这样做.