如何获得带有statsd和graphite的累积计数图?

时间:2013-06-26 09:25:55

标签: configuration graphite statsd

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

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

做了配置storage-aggregation.conf,也许我错了?此外,我停止了碳(不是stop,但真的杀了它,因为显然只是停止它不允许它重新加载配置)。我还删除了/opt/graphite/storage/whisper/stats_counts目录。然后我重新启动了碳守护进程。我仍然得到每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代码来计算用户总数,偶尔使用gauge而不是incr,但感觉石墨应该能够只是总结它收到的任何东西,而不仅仅是在汇总数据时。

修改

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

1 个答案:

答案 0 :(得分:2)

integral()函数是执行此操作的正确方法。由于StatsD在这方面是无状态的(所有收集的数据在刷新到Graphite之后被重置/删除),因此无法从某个点开始总结所有接收到的数据。

来自integral()函数的Graphite文档:

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.