我可以按正则表达式对石墨结果进行分组吗?

Can I group graphite results by regex?

为了支持我们的后端 pythonic 程序,我已经使用 Graphite 一段时间了。作为我使用它的一部分,我需要使用通配符对不同的指标求和(使用 sumSeries)。

问题是,我需要根据模式对它们进行分组;假设我有以下范围的指标名称:

group.*.item.*

我需要对给定组的所有项目的值求和(意思是:group.1.item.*group.2.item.* 等)

不幸的是,我事先不知道现有组值的集合,所以我现在做的是查询 metrics/index.json、解析列表并生成所需的查询(手动创建 sumSeries(group.NUMBER.item.*) 我在指标索引中找到的每个数字)。

我想知道是否有办法让 Graphite 为我做这件事,并节省第一次往返,因为通信和预处理的成本很高(占整个过程一半以上的时间)

提前致谢!

如果你想为每个组单独一行,你可以使用 groupByNode 函数。

groupByNode(group.*.item.*, 1, "sumSeries")

其中“1”是您选择的节点(索引为 0),"sumSeries" 是您将每个组输入的函数。

您可以在此处阅读更多相关信息:http://graphite.readthedocs.io/en/latest/functions.html#graphite.render.functions.groupByNode

如果您想将第二个节点限制为仅数值,您可以使用字符范围。您可以通过在方括号 [...] 中指定范围来执行此操作。字符范围由 2 个字符表示,中间用破折号 (-) 分隔。

group.[0-9].item.*

您可以在此处阅读更多相关信息: http://graphite.readthedocs.io/en/latest/render_api.html#paths-and-wildcards