石墨的价值积累
Posted
技术标签:
【中文标题】石墨的价值积累【英文标题】:accumulation of value in Graphite 【发布时间】:2011-10-29 02:06:38 【问题描述】:每次用户连接到我的网站时,我都会发送一条消息。
采用这种格式:
"user_login 1 13xxxxxxx" (key value timestamp)
我的问题是 Graphite 给我一个图表,每分钟只有一条值为“1”的线。 我每分钟发送随机数量的消息(6 到 60 条之间),但我认为 Graphite 限制为第一条(或最后一条?)消息,以显示一个值。
如何每分钟计算每条消息的总和?
【问题讨论】:
【参考方案1】:使用 sumSeries target=sumSeries(graphite.counterName) 如果您想要超过一分钟的总和,请使用 summarise 函数
【讨论】:
【参考方案2】:您可能对在您的石墨服务器上运行 statsd 或 statsite 感兴趣。该软件将在可配置的时间段内汇总所有统计数据,并将结果写入石墨。
看看 github.com/etsy/statsd(在 node.js 中)和 github.com/kiip/statsite(python 克隆)。 Etsy 的 statsd 包含一些关于如何使用它的代码示例。
【讨论】:
这就是我最终要做的。运行另一个服务有点烦人,但它是一个小服务。 我实际上使用了 C(更新)版本的 statsite:github.com/armon/statsite。唯一烦人的是我必须更改默认的“接收器”文件以删除“statsite.counts”。默认情况下,statsite 会在您发送的任何统计数据之前添加前缀。【参考方案3】:这也可能是您的数据按指标聚合的方式,它默认为平均值,这可能不是您所期望的。另见Tracking metrics using StatsD (via etsy) and Graphite, graphite graph doesn't seem to be graphing all the data。
【讨论】:
【参考方案4】:在您的系列中使用cumulative function。
默认情况下,绘制图形时,图形的宽度为 像素小于要绘制的数据点的数量, Graphite 平均每个像素的值。累积()函数 将合并函数更改为从平均值求和。
【讨论】:
【参考方案5】:您还可以尝试碳聚合服务,以便在收集指标时而不是在 Graphite UI 中聚合指标。聚合规则配置见http://graphite.readthedocs.org/en/latest/config-carbon.html#aggregation-rules-conf。请注意,您需要将指标发送到与普通碳收集器端口不同的端口中运行的碳聚合服务端口。
【讨论】:
【参考方案6】:Jari 是正确的,carbon-aggregator 是专门为此编写的。
确保在 aggregation-rules.conf 中使用 sum 函数,例如:
bpu.<cluster>.<account>.<metric>_sum (1) = sum bpu.<cluster>.<account>.<metric>_sum
【讨论】:
【参考方案7】: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
【讨论】:
【参考方案8】:默认情况下,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?
【讨论】:
以上是关于石墨的价值积累的主要内容,如果未能解决你的问题,请参考以下文章