7

我正在使用 statsd(来自 git master 分支的最新版本)和石墨(0.9.10)作为后端。

在我的(Django)代码中,我statsd.incr("signups")在用户注册时调用。在 Graphite 的 Web 界面中,我现在在 Graphite/stats/signups 下看到了一个显示每秒注册数的漂亮图表。当我查看 Graphite/stats_counts/signups 下的图表时,我希望看到注册总数,但它看起来像是每 10 秒间隔的注册数(我猜这是 statsd 的刷新间隔)。

确实配置storage-aggregation.conf了,也许我弄错了?另外,我停止了 carbon (不是用stop,而是真的杀死了它,因为显然只是停止它不允许它重新加载配置)。我也删除了/opt/graphite/storage/whisper/stats_counts目录。然后我重新启动了 carbon 守护进程。我仍然得到每 10 秒间隔的注册数量。:-(

这是我的配置:

# /opt/graphite/conf/storage-aggregation.conf

[lower]
pattern = \.lower$
xFilesFactor = 0.1
aggregationMethod = min

[upper]
pattern = \.upper$
xFilesFactor = 0.1
aggregationMethod = max

[upper_90]
pattern = \.upper_90$
xFilesFactor = 0.1
aggregationMethod = max

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

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

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

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

[stats_counts]
pattern = ^stats_counts\.
xFilesFactor = 0
aggregationMethod = sum

[min]
pattern = \.min$
xFilesFactor = 0.1
aggregationMethod = min

[max]
pattern = \.max$
xFilesFactor = 0.1
aggregationMethod = max

[default_average]
pattern = .*
xFilesFactor = 0.5
aggregationMethod = average

和这个:

# /opt/graphite/conf/storage-schemas.conf

[stats]
priority = 110
pattern = ^stats.*
retentions = 10s:6h,1m:7d,10m:1y

我开始认为我做的一切都是正确的,而且 Graphite 确实在做它应该做的事情。所以问题是:

配置 statsd 和石墨以绘制自一开始以来的注册总数的正确方法是什么?

我想我可以偶尔更改我的 Django 代码来计算用户总数,然后使用 agauge而不是 an incr,但感觉石墨应该能够即时总结它收到的任何内容,而不是就在它聚合数据的时候。

编辑:

使用 Graphite 的 Web 界面,在 Graphite 作曲家中,我将该integral函数应用于基本的“每秒注册数”图(在 Graphite/stats/signups 中),并得到了所需的图(即注册总数)。这是获取累积图的适当方法吗?这很烦人,因为我需要从一开始就选择完整的日期范围,我无法放大图表,否则我只能得到放大部分的积分。:-(

4

1 回答 1

2

是的,该integral()功能是这样做的正确方法。由于 StatsD 在这方面是无状态的(在刷新到 Graphite 后所有收集的数据都被重置/删除),因此它无法总结从某一点开始接收到的所有数据。

integral()函数的石墨文档:

This will show the sum over time, sort of like a continuous addition function. Useful for finding totals or trends in metrics that are collected per minute.

于 2013-07-01T12:38:50.090 回答