18

我们运行 etsy/statsd 节点应用程序,它每 10 秒将统计信息刷新到 carbon/whisper。如果您发送 100 个增量(计数),在前 10 秒内,graphite 会正确显示它们,例如:

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]]}]
4

1 回答 1

31

石墨数据存储

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

聚合/下采样

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

默认情况下,石墨将平均数据,因为它聚合成较低分辨率的数据。当应用于计时器(甚至仪表)数据时,使用平均值来执行聚合是有意义的。也就是说,您正在处理计数器,因此您需要sum

例如,在 storage-aggregation.conf 中:

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

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

在查看图表或查看不同时间段的原始 (json) 数据时,了解聚合/下采样数据的表示方式也很重要,因为数据保留模式阈值直接影响图表。在您的情况下,您正在查询render?from=-20min哪个越过您的 10s:10m 边界。

Graphite 将根据定义的最低分辨率精度显示(并执行实时下采样)数据。换句话说,这意味着如果您绘制跨越一个或多个保留间隔的数据,您将获得相应的汇总。一个例子会有所帮助(假设保留:retentions = 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 分钟,这将避免动态汇总。

于 2013-07-05T04:42:22.393 回答