【问题标题】:Calculate percentage in Graphite for groupByNode() results计算 Graphite 中 groupByNode() 结果的百分比
【发布时间】:2017-04-17 00:00:07
【问题描述】:

我有两组 Graphite 系列,都是这种格式。第二组是相同的,只是它的前缀不是“a.b”,而是“x.y”。

 a.b.ccc.a1.hr
 a.b.ccc.a2.hr
 a.b.ccc.a3.hr
 a.b.ddd.a1.hr
 a.b.ddd.a4.hr

要按第三个节点分组,我使用groupByNode(a.b.*.*.hr,2,"sumSeries"),这得到了两个系列:cccddd。我想将第一组中的cccddd 系列除以第二组中的相应系列。如何在 map/reduce 函数中使用groupByNode 的结果?

【问题讨论】:

    标签: graphite grafana


    【解决方案1】:

    这是可能的,但很棘手,或者至少我不知道以可扩展的方式更简单的方法。

    请注意,下面的方法使用了 mapSeries / reduceSeries 函数,这些函数仅在石墨网络 master 中可用(不是 0.9.x,请参阅下面的适用于 0.9.x 的手动方法)

    我们从 2 个系列列表开始,每个系列列表都包含 cccddd

    groupByNode(a.b.*.*.hr,2,"sumSeries")
    groupByNode(x.y.*.*.hr,2,"sumSeries")
    

    现在我们需要将它们放入包含所有项目的单个 seriesList 中,所以首先我们需要让它们再次可区分:

    aliasSub(groupByNode(a.b.*.*.hr,2,"sumSeries"), "$", ".a_b")
    aliasSub(groupByNode(x.y.*.*.hr,2,"sumSeries"), "$", ".x_y")
    

    现在我们有了ccc.a_bddd.a_bccc.x_yddd.x_y,我们可以使用group 将它们放到一个列表中:

    group(
      aliasSub(groupByNode(a.b.*.*.hr,2,"sumSeries"), "$", ".a_b"),
      aliasSub(groupByNode(x.y.*.*.hr,2,"sumSeries"), "$", ".x_y")
    )
    

    现在我们可以开始 map/reduce:

    reduceSeries(
      mapSeries(
        group(
          aliasSub(groupByNode(a.b.*.*.hr,2,"sumSeries"), "$", ".a_b"),
          aliasSub(groupByNode(x.y.*.*.hr,2,"sumSeries"), "$", ".x_y")
        ),
        0
      ),
      "asPercent", 1, "a_b", "x_y"
    )
    

    此时我们将拥有ccc.reduce.asPercentddd.reduce.asPercent,然后如果您只想要cccddd,您可以将整个东西包装在另一个aliasByNode(<query>, 0) 中。

    这与调用本质上是一样的:

    group(
      alias(asPercent(
        groupByNode(a.b.ccc.*.hr,2,"sumSeries"),
        groupByNode(x.y.ccc.*.hr,2,"sumSeries"),
      ), "ccc"),
      alias(asPercent(
        groupByNode(a.b.ddd.*.hr,2,"sumSeries"),
        groupByNode(x.y.ddd.*.hr,2,"sumSeries"),
      ), "ddd")
    )
    

    当然,如果您添加 eee 等,它将继续工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 2014-08-07
      • 2021-12-19
      相关资源
      最近更新 更多