如何在grafana上绘制百分比?

时间:2017-03-07 18:33:44

标签: monitoring graphite grafana

我有成功和失败指标如下:

A.B.p1.success
A.B.p3.success
A.B.p4.success
...

A.B.p1.failure
A.B.p2.failure
A.B.p4.failure
...

我总共有大约30个人,我希望通过以下方式显示每个人的成功率:

alias(asPercent(A.B.p1.success,sumSeries(A.B.p1.success,A.B.p1.failure)), 'p1')

我遇到的问题:

1)如果我对每行中的所有人进行硬编码,它超过了Grafana允许的最大行数,并且我想在同一图表上绘制它们

2)如果有办法我可以通过Grafana函数来实现吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

在Graphite中执行此操作的方法是使用子查询:

  1. 在Grafana中添加两个查询,查询#A表示总计,查询#B表示成功率
  2. 隐藏查询#A
  3. 将查询#A作为参数传递给查询#B
  4. 中的AsPercent函数

    enter image description here

    使用sumSeriesWithWildcard函数对多个系列求和以获得#A中的总数:

    https://stackoverflow.com/a/12837800/22688

    有关更多信息,请参阅AsPercent函数,阅读我的博文。我在最后描述了如何使用AsPercent函数:

    https://danlimerick.wordpress.com/2017/01/29/graphite-and-grafana-how-to-calculate-percentage-of-totalpercent-distribution/

    如果asPercent函数不起作用(取决于您使用的Graphite的版本和变体),您可以使用mapSeries和reduceSeries(也在博客文章中)获得相同的结果:

    aliasByNode(reduceSeries(mapSeries(groupByNodes(snap.gceprod.*.intel.docker.kube-system.*.snap.stats.filesystem.*.{usage,capacity}, 'maxSeries', 2, 11), 0), 'asPercent', 1, 'usage', 'capacity'), 0)

    如果你需要另一个例子,我在这里回答了类似的问题:https://stackoverflow.com/a/42714756/22688