获得准确的石墨stats_counts

时间:2013-07-04 16:05:41

标签: graphite statsd

我们运行了etsy / statsd节点应用程序,每10秒将统计信息刷新为碳/窃听私语。如果发送100个增量(计数),在前10秒内,石墨会正确显示它们,如:

localhost:3000/render?from=-20min&target=stats_counts.test.count&format=json

[{"target": "stats_counts.test.count", "datapoints": [
 [0.0, 1372951380], [0.0, 1372951440], ... 
 [0.0, 1372952460], [100.0, 1372952520]]}]

然而,10秒后,这个数字下降到0,null和或33.3。最终它的结算值为初始增量数的1/6,在这种情况下为16.6

/opt/graphite/conf/storage-schemas.conf是:

[sixty_secs_for_1_days_then_15m_for_a_month]
pattern = .*
retentions = 10s:10m,1m:1d,15m:30d

我想得到准确的数字,石墨是否平均了60秒窗口的数据而不是总结它?使用积分函数,经过一段时间后,显然会给出:

localhost:3000/render?from=-20min&target=integral(stats_counts.test.count)&format=json

[{"target": "stats_counts.test.count", "datapoints": [
 [0.0, 1372951380], [16.6, 1372951440], ... 
 [16.6, 1372952460], [16.6, 1372952520]]}]

1 个答案:

答案 0 :(得分:29)

Graphite data storage

Graphite使用 storage-schemas.conf storage-aggregation.conf 中存储的设置组合管理数据保留。我看到你的保留策略(来自storage-schemas.conf的片段)告诉Graphite只存储1个数据点以获得最高分辨率(例如10s:10m),并且它应该将这些数据点的聚合管理为数据老化并移动到较旧的区间(定义较低的分辨率 - 例如1m:1d)。在您的情况下,数据在10分钟后进入下一个保留间隔,10分钟后,数据将根据storage-aggregation.conf中的设置进行汇总。

Aggregation / Downsampling

当数据老化并且落入指定较低分辨率保留的时间间隔时,会发生聚合/缩减采样。在您的情况下,您将为每10秒间隔存储1个数据点,但是一旦该数据超过10分钟,石墨现在将数据存储为1个数据点,持续1分钟。这意味着你必须告诉石墨应该如何采取10秒数据点(你每分钟有6个数据点)并将它们聚合成整个一分钟的1个数据点。应该平均吗?应该总结吗?根据您在帖子中暗示的数据类型(例如,计时,计数器),这可能会产生很大的不同。

默认情况下,graphite会在数据聚合为较低分辨率数据时对数据进行平均。当应用于计时器(甚至计量)数据时,使用平均值来执行聚合是有意义的。也就是说,您正在处理计数器,因此您需要求和

例如,在storage-aggregation.conf中:

[count]
pattern = \.count$
xFilesFactor = 0
aggregationMethod = sum

UI(和原始数据)聚合/下采样

了解在查看图表或查看不同时间段的原始(json)数据时如何表示聚合/下采样数据也很重要,因为数据保留架构阈值直接影响图表。在你的情况下,你正在查询跨过10秒的render?from=-20min:10米边界。

Graphite将根据定义的最低分辨率精度显示(并执行实时下采样)数据。换句话说,这意味着如果您绘制跨越一个或多个保留间隔的数据,您将相应地进行汇总。一个例子将有所帮助(假设保留:保留= 10s:10m,1m:1d,15m:30d)

任何数据不早于过去10分钟的图表都将显示10秒的聚合。当您跨越10分钟阈值时,您将开始根据storage-aggregation.conf中设置的策略开始查看1分钟的计数数据。

摘要/ tldr;

因为你正在绘制/查询20分钟的数据(例如render?from=-20min),你肯定会陷入精度较低的存储设置(即10s:10m, 1m:1d , 15m:30d)这意味着根据您的聚合策略发生聚合您应该确认您正在使用sum来获取storage-aggregation.conf文件中的正确模式。此外,您可以将图表/查询时间范围缩短到不到10分钟,这样可以避免动态汇总。