使用 statsD 时,有啥方法可以填补石墨中缺失的数据?

Posted

技术标签:

【中文标题】使用 statsD 时,有啥方法可以填补石墨中缺失的数据?【英文标题】:Is there any way to fill in missing data in graphite when using statsD?使用 statsD 时,有什么方法可以填补石墨中缺失的数据? 【发布时间】:2012-11-24 02:03:08 【问题描述】:

我正在使用 statsD 向石墨报告计数器数据;每次我收到消息时都会发送一个勾号。这很好用,除非在 statsD 出于某种原因必须重新启动的情况下。然后我的图表中出现了巨大的漏洞,因为当我没有收到任何消息时,statsD 现在不再每 10 秒发送一次“0”。

我正在报告各种不同的消息类型和队列,有时我很长时间都没有收到特定队列的消息。

是否有任何现有方法可以使用我指定的默认值(在我的情况下为 0)“填充”缺失的数据?

我曾考虑为给定指标发送“0”计数,以便 statsD 开始为其发送 0,但我并不总是知道我将提前报告的指标集。

【问题讨论】:

原来有一个功能可以完全满足我的要求。尽管正如@ALQ 指出的那样,重要的是要知道它会影响聚合; transformNull(). 【参考方案1】:

可以使用graphite中的“keepLastValue(requestContext, seriesList)”函数来处理缺失数据。它“[c] 当数据中出现间隙(‘无’值)时,使用最后收到的值继续行,而不是中断行。”

【讨论】:

太棒了!不是我想要的,因为我希望能够报告 0 而不是最后一个值。但是,通常情况下,该值为 0,因此暂时可以使用。谢谢! 不要迂腐,发送 0 而不是“无数据”会降低您的聚合(分位数,平均值)。【参考方案2】:

如果您只想用零“填充”可视图形,请查看“图形选项 -> 线模式 -> 将 Null 绘制为零”。这不会让您设置 0 以外的值,并且如果您以 json 或 csv 格式获取数据,它不会导致显示 0,但如果您只想查看包含一些图形的图表,这通常是您想要的没有数据被记录的范围。

【讨论】:

【参考方案3】:

查看 Graphite 提供的函数transformNull。例如

transformNull(stats.timers.deploys.all.duration.total.mean, 0)

这会将具有空数据的部分映射到 0。

【讨论】:

【参考方案4】:

解决这个问题的方法是不要保留最后一个值或变换空值。实施其中一个选项只会导致您显示不正确的数据,并且在出现问题时不会提醒您。

您需要更改您的存储架构,以便它存储您发送的数据量,而不是更多。

如果指标每 5 秒发送一次,而您的存储架构为 1 秒,您将获得五个数据点,其中四个为空。

查看此文档:https://github.com/etsy/statsd/blob/master/docs/graphite.md

【讨论】:

以上是关于使用 statsD 时,有啥方法可以填补石墨中缺失的数据?的主要内容,如果未能解决你的问题,请参考以下文章

安装石墨+statsd ....得到错误未知的碳缓存

特征工程-使用随机森林进行缺失值填补

特征工程-使用随机森林进行缺失值填补

特征工程-使用随机森林进行缺失值填补

特征工程-使用随机森林进行缺失值填补

石墨:总结所有匹配模式的统计数据?