已删除/空的 Graphite Whisper 文件自动重新生成

Posted

技术标签:

【中文标题】已删除/空的 Graphite Whisper 文件自动重新生成【英文标题】:Deleted/Empty Graphite Whisper Files Automatically Re-Generating 【发布时间】:2013-03-08 06:09:21 【问题描述】:

我正在尝试删除一些旧的石墨测试耳语指标,但没有任何成功。我可以通过删除文件来删除指标。 (请参阅:How to cleanup the graphite whisper's data?)但是,在吹走它们重新生成的文件的几秒钟内(它们没有指标并保持这种状态,因为没有在这些文件中创建新指标)。我尝试在删除文件之前停止 carbon (carbon-cache.py stop),但是当我重新启动 carbon (carbon-cache.py --debug start &) 时它们又回来了。

如何永久删除这些文件/metics,以免它们再次出现?

【问题讨论】:

【参考方案1】:

我们没有运行statsd,但我们运行carbon-aggregator,其目的类似。重新启动它解决了类似的问题。

【讨论】:

【参考方案2】:

默认情况下,Statsd 将继续为在上一个刷新周期内未收到的计数器发送 0。这会导致 carbon 重新创建文件。

假设我们要从 Statsd 中删除一个名为“bad_metrics.sent”的计数器。您可以使用默认运行在 8126 端口上的 Statsd 管理界面:

$ telnet <server-ip> 8126
Trying <server-ip>...
Connected to <server-name>.
Escape character is '^]'.

使用“帮助”获取命令列表:

help
Commands: stats, counters, timers, gauges, delcounters, deltimers, delgauges, quit

您可以使用“计数器”查看所有计数器的列表:

counters
 'statsd.bad_lines_seen': 0,
  'statsd.packets_received': 0,
  'bad_metrics.sent': 0 
END

“delcounters”、“deltimers”和“delgauges”命令从 statsd 中删除指标:

delcounters bad_metrics.sent
deleted: bad_metrics.sent
END

从 Statsd 中删除指标后,您可以删除与其关联的耳语文件。在本例中,这将是:

/opt/graphite/storage/whisper/bad_metrics/sent.wsp

或(在 Ubuntu 中):

/var/lib/graphite/whisper/bad_metrics/sent.wsp

【讨论】:

还有其他方法可以调出statsd管理界面吗?从服务器上的根命令提示符说? (由于某种原因,telnet 接口无法在我们的服务器上运行) 注意:在我的服务器上它正在工作,但是当我在其中远程登录时,它会显示单词“ERROR”。但它实际上做得很好! 注意:对我来说,删除计数器是不够的。我重新启动了 statsd,这似乎解决了问题。 哇!这让我们摸不着头脑……但果然statsd 正在为几个月不存在的“幻影”EC2 实例缓存和发送旧的度量路径到 Graphite!重新启动 statsd 让我们能够清理 carbon-cache 节点上的耳语文件,而这一次它们没有了。 聚会有点晚了,但刚刚找到了一种与管理界面交互的非常优雅的方式:echo 'counters' | nc localhost 8126 | grep api_server 也可以与删除命令一起使用以删除特定的数据点。【参考方案3】:

最新的 StatsD 版本可以选择在刷新后不再发送零,而只发送实际发送给它的内容。如果您打开它,则不应重新创建耳语文件:https://github.com/etsy/statsd/blob/master/exampleConfig.js#L39

【讨论】:

设置此标志会导致图表具有空值,显示“未附加”数据点。因此,在每个图表上,您必须启用“将 Null 绘制为零”设置来解决此问题。您碰巧知道其他解决方案吗?我遇到了同样的问题。 deleteIdleStats: true 有几个适用的设置:deleteIdleStats,适用于所有统计数据,并且可以单独覆盖deleteGaugesdeleteTimersdeleteSetsdeleteCounters。这些默认为 false,这意味着当某个时间段未收到数据时,statsd 将始终发送 0(仪表的先前值)。【参考方案4】:

您是否正在运行 statsd 或类似的东西?

我遇到了同样的问题,这是因为在我删除耳语文件后 statsd 正在刷新它在内存中的计数器。我回收了 statsd 并且文件现在仍然被删除。

希望对你有帮助

【讨论】:

是的,我正在运行 statsd。如何回收 statsd?

以上是关于已删除/空的 Graphite Whisper 文件自动重新生成的主要内容,如果未能解决你的问题,请参考以下文章

Graphite:帮我解释一下whisper-info.py的输出

Graphite(耳语)指标可以重命名吗?

石墨历史数据合并

Graphite(耳语)指标可以别名吗?

Icinga2使用graphite显示图像

为啥在已删除的默认 ctor 旁边定义一个空的副本 ctor 会使空列表的值初始化失败?