每次用户连接到我的网站时,我都会发送一条消息。
使用以下格式:
"user_login 1 13xxxxxxx" (key value timestamp)
我的问题是Graphite给我一个图表,每分钟只有一行值“1”。 我每分钟发送一个随机数量的消息(6到60之间),但我认为Graphite限制第一个(或最后一个?)消息,以显示一个值。
如何处理每一条消息的总和,每分钟?
答案 0 :(得分:11)
您还可以尝试碳聚合服务,以便在收集指标而不是在Graphite UI中聚合指标。有关聚合规则配置,请参阅http://graphite.readthedocs.org/en/latest/config-carbon.html#aggregation-rules-conf。请注意,您需要将指标发送到运行在与普通碳收集器端口不同的端口的碳聚合服务端口。
答案 1 :(得分:7)
您可能有兴趣在石墨服务器上运行statsd或statsite。该软件将按可配置的时间段汇总所有统计数据,并将结果写入石墨。
查看github.com/etsy/statsd(在node.js中)和github.com/kiip/statsite(python clone)。 Etsy的statsd包含一些关于如何使用它的代码示例。
答案 2 :(得分:3)
如果你想超过一分钟,请使用sumSeries target = sumSeries(graphite.counterName)或汇总函数
答案 3 :(得分:3)
Jari是正确的,碳聚合器是专门为此编写的。
确保在aggregation-rules.conf中使用sum函数,例如:
bpu.<cluster>.<account>.<metric>_sum (1) = sum bpu.<cluster>.<account>.<metric>_sum
答案 4 :(得分:2)
hitcount(seriesList, intervalString, alignToInterval=False)
http://code.hootsuite.com/accurate-counting-with-graphite-and-statsd/
http://obfuscurity.com/2012/04/Unhelpful-Graphite-Tip-1
http://graphite.readthedocs.org/en/latest/functions.html#graphite.render.functions.hitcount
答案 5 :(得分:1)
这也可能是您的数据按指标汇总的方式,默认为平均值,可能与您预期的不同。另请参阅Tracking metrics using StatsD (via etsy) and Graphite, graphite graph doesn't seem to be graphing all the data。
答案 6 :(得分:1)
使用系列中的cumulative function。
默认情况下,绘制图形时,以及图形的宽度 像素小于要绘制的数据点的数量, Graphite平均每个像素的值。 cumulative()函数 将合并函数更改为与平均值相加。
答案 7 :(得分:1)
默认情况下,graphite仅存储以最小保留粒度(不平均值)为任何传入指标发送的最后值。如果您想要聚合,常见的解决方案是使用statsd。
但是,您也可以使用碳聚合器。只需确保将指标发送到聚合器线路端口,然后使用如下规则更新aggregation-rules.conf:
user_login (10) = sum user_login$
注意:这假设您的最短保留期限仍然是10秒(默认值),您可以通过查看storage-schemas.conf来确认
有关详细说明,请参阅:Why use statsd when graphite's Carbon aggregator can do the same job?