2

我正在尝试使用 Graphite 来计算我所有资源的点击率,所以我尝试像这样记录我的数据:

  • ctr.resource_id.clicks
  • ctr.resource_id.reach

所以首先,我提出了我的查询:

&target= averageSeries(divideSeries(ctr.176983011340976128.clicks,ctr.176983011340976128.reach),divideSeries(ctr.190348137012011008.clicks,ctr.190348137012011008.reach))

我的问题是我不想将所有资源 ID 发送到石墨,所以我尝试了:

&target= averageSeries(divideSeries(ctr.*.clicks,ctr.*.reach))

但是,是的,正如文档所说“ ValueError: divideSeries 第二个参数必须准确引用 1 系列”。

我尝试了另一种架构:

  • ctr.clicks.resource_id
  • ctr.reach.resource_id

但是同样的问题……</p>

我是 Graphite 的新手,所以如果有人有解决方案,那就太棒了!

编辑:

刚看到函数groupByNode,正在尝试使用它……</p>

4

1 回答 1

1

听起来您需要事先将数据聚合成一个系列,以便您可以将其传递给 divideSeries。

配置 Carbon 文档中的 Aggregator-rules.conf 参考:http: //graphite.readthedocs.org/en/latest/config-carbon.html

因此,您需要 2 个这样的规则来总结每分钟的点击数据: ctr.resource_all.clicks (60) = sum ctr.*.clicks ctr.resource_all.reach (60) = sum ctr.*.reach

您还必须运行 carbon-aggregator.py 守护进程 /opt/graphite/bin/carbon-aggregator.py start

聚合器守护程序的默认端口是 2023,因此您应该在此处发送流量,而不是您一直使用的 2003 端口。

于 2012-06-14T12:57:00.517 回答