16

每次用户连接到我的网站时,我都会发送一条消息。

使用这种格式:

"user_login 1 13xxxxxxx"  (key value timestamp)

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

如何每分钟计算每条消息的总和?

4

8 回答 8

11

您还可以尝试碳聚合服务,以便在收集指标时而不是在 Graphite UI 中聚合指标。有关聚合规则配置,请参见http://graphite.readthedocs.org/en/latest/config-carbon.html#aggregation-rules-conf。请注意,您需要将指标发送到与普通碳收集器端口不同的端口中运行的碳聚合服务端口。

于 2012-06-30T10:40:50.643 回答
7

您可能对在您的石墨服务器上运行 statsd 或 statsite 感兴趣。该软件将在可配置的时间段内汇总所有统计数据,并将结果写入石墨。

看看 github.com/etsy/statsd(在 node.js 中)和 github.com/kiip/statsite(python 克隆)。Etsy 的 statsd 包含一些关于如何使用它的代码示例。

于 2011-10-28T22:01:32.247 回答
3

使用 sumSeries target=sumSeries(graphite.counterName)或汇总函数,如果你想总结超过一分钟

于 2011-09-10T15:49:00.420 回答
3

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

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

bpu.<cluster>.<account>.<metric>_sum (1) = sum bpu.<cluster>.<account>.<metric>_sum
于 2013-01-11T13:53:23.937 回答
1

在您的系列上使用累积功能。

默认情况下,当绘制图形时,图形的像素宽度小于要绘制的数据点的数量,Graphite 会平均每个像素的值。累积()函数将合并函数更改为从平均值求和。

于 2012-03-10T09:47:29.320 回答
1

默认情况下,graphite 仅以最小保留粒度(而不是平均值)存储为任何传入指标发送的最后一个值。如果你想要聚合,常见的解决方案是使用statsd

但是,您也可以使用碳聚合器。只要确保您将指标发送到聚合器线路端口,然后使用如下规则更新aggregation-rules.conf:

user_login (10) = sum user_login$

注意:这假设您的最短保留期仍为 10 秒(默认),您可以通过查看 storage-schemas.conf 来确认

有关详细说明,请参阅:当石墨的碳聚合器可以完成相同的工作时,为什么要使用 statsd?

于 2015-05-01T13:50:35.217 回答
1

这也可能是您的数据按指标聚合的方式,它默认为平均值,这可能不是您所期望的。另请参阅Tracking metrics using StatsD (via etsy) 和 Graphite,graphite graph 似乎并没有绘制所有数据

于 2012-03-06T16:48:59.640 回答