在石墨中积累价值

16
我在用户连接到我的网站时发送一条消息。
消息格式如下:
"user_login 1 13xxxxxxx"  (key value timestamp)

我的问题是Graphite给了我一个只有值为“1”的线图,每分钟一次。 我每分钟发送随机数量的消息(在6到60之间),但我认为Graphite限制了显示一个值的第一个(或最后一个?)消息。

如何才能每分钟对每个消息进行求和呢?

8个回答

11

7
你可能对在你的 graphite 服务器上运行 statsd 或 statsite 感兴趣。该软件将聚合所有统计信息,按可配置的时间段进行,并将结果写入 graphite。
请访问 github.com/etsy/statsd(使用 node.js)和 github.com/kiip/statsite(python 克隆版)进行了解。Etsy 的 statsd 包含一些代码示例,展示如何使用它。

这就是我最终做的。虽然有另一个服务在运行,但这只是一个小服务,有点烦人。 - Walt W
1
我实际上使用了C(更近期)版本的statsite:https://github.com/armon/statsite。唯一让人烦恼的是,我必须更改默认的“sink”文件,以删除“statsite.counts.”前缀,该前缀是statsite在默认情况下在您发送的任何统计信息之前添加的。 - Walt W

3

Jari是正确的,carbon-aggregator是专门为此编写的。

确保在aggregation-rules.conf中使用sum函数进行聚合,例如:

bpu.<cluster>.<account>.<metric>_sum (1) = sum bpu.<cluster>.<account>.<metric>_sum

3

如果你想对超过一分钟的内容进行求和,可以使用 sumSeries(graphite.counterName) 或者 summarize 函数。



1

默认情况下,Graphite仅在最小保留粒度(而不是平均值)中存储任何传入指标的最后值。如果您需要聚合数据,常见解决方案是使用statsd

但是,您也可以使用carbon-aggregator。只需确保将指标发送到聚合器行端口,然后更新aggregation-rules.conf文件,并添加以下规则:

user_login (10) = sum user_login$

注意:这假设您的最小保留期仍为10秒(默认值),您可以通过查看storage-schemas.conf进行确认。
有关更详细的说明,请参见:为什么使用statsd,而不是graphite的Carbon聚合器可以完成相同的工作?

1

在你的系列上使用累积函数

默认情况下,在绘制图形时,如果像素宽度小于要绘制的数据点数, Graphite会对每个像素的值进行平均。cumulative()函数将合并函数更改为从平均值到求和。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接