Graphite 在长时间使用时无法正确绘制数值?
Posted
技术标签:
【中文标题】Graphite 在长时间使用时无法正确绘制数值?【英文标题】:Graphite does not graph values correctly when using long durations? 【发布时间】:2012-10-12 17:12:30 【问题描述】:我正在尝试使用 statsd 和石墨绘制数据。我有一个简单的计数器,我将其递增 1,然后当我绘制一天中计数器的值时,我看到奇怪的值,如 0.09 作为我的图表中的峰值(参见http://i.stack.imgur.com/o4gmz.png)
此图表应显示 2 次登录,但显示的是 0.09。如果我将时间刻度从 1 天更改为最后 15 分钟,那么它会正确显示两次登录(请参阅http://i.stack.imgur.com/23vDJ.png)
我已经在 storage-schemas.conf 中设置了我最好的保留时间,以 10 秒为增量:
retentions = 10s:7d,1m:21d,24h:5y
我已将 storage-aggregation.conf 文件设置为汇总计数:
[sum]
pattern = \.count$
xFilesFactor = 0
aggregationMethod = sum
(而且,在你问之前,是的;这是一个 .count)。
如果我使用&rawData=true
尝试我的URL,那么在任何一种情况下,我都会看到一些None
s、一些0.0
s 和一对1.0
s,由一些0.0
s 分隔。我从来没有看到这些以某种方式出现在图表上的小数值。所以......这是一个错误吗?我做错了吗?
【问题讨论】:
啊哈!为此存在一个错误:bugs.launchpad.net/graphite/+bug/850475 当数据点多于图形宽度中的像素时,Graphite 似乎会将统计信息聚合在一起。您可以(在某种程度上)使用汇总函数解决此问题: &target=summarize(counter.login, "5 min", "sum") Jason,同一指标的耳语获取怎么说?进入石墨主机并运行:whisper-fetch --pretty yourfile.wsp 有人用石墨找到解决这个问题的方法吗?我也有同样的问题。 @JasonWalton,我认为您可以在下面发布自己的答案并将其标记为有效。 :) 总结已经在那里了。 【参考方案1】:还有 consolidateBy 函数,它告诉石墨如果没有足够的像素来准确地绘制所有内容,该怎么办。默认情况下,它使用“avg”函数,因此当时间范围更大时会出现奇怪的结果。 Here 文档摘录:
绘制图形时,图形大小的宽度(以像素为单位)为 小于要绘制的数据点的数量,Graphite 合并值以防止线重叠。这 consolidateBy() 函数将合并函数从 “平均”默认为“总和”、“最大”或“最小”之一。这是 在销售图表中特别有用,其中分数值没有 意义和合并值的“总和”是合适的。
另一个可能有用的功能是hitcount。 here 的简短摘录为什么有用:
这个函数类似于summarize(),除了它补偿 自动为不同的时间尺度(这样一个类似的图表 使用细粒度或粗粒度记录的结果)和 优雅地处理很少发生的事件。
我花了一些时间摸不着头脑,为什么当我的聚合规则为最大值时,我的计数器的时间范围超过几个小时。这非常令人困惑,尤其是在您开始使用单个计数器以查看是否一切正常时。检查 rawData 是调试完整性检查的好方法;)
【讨论】:
以上是关于Graphite 在长时间使用时无法正确绘制数值?的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 Graphite/Grafana 中的 x 轴(按天绘制)?
当应用程序后台运行时,Objective-c 长时间运行的蓝牙后台服务
当x轴为时间格式(HH:MM)时,Highchart的热图图无法正确渲染