【问题标题】:how to plot percentage on grafana?如何在grafana上绘制百分比?
【发布时间】:2017-03-07 18:33:44
【问题描述】:

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

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 函数来实现吗?

提前致谢!

【问题讨论】:

    标签: monitoring graphite grafana


    【解决方案1】:

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

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

    使用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

    【讨论】:

    • 可以使用 reduceSeries + mapSeries 和 asPercent,但据我所知,它仍然需要具有总值的指标。 OP 只有成功和失败 - 而不是它们的总和。
    • 也许我不太明白这个问题。 OP 可以不只是将成功和失败系列与 OP 在查询#A 中可以执行的 groupByNode 函数相加吗?
    • @kwarunek 再想一想,sumSeriesWithWildcard 应该可以得到总数。
    • 如果我展开左上角显示的红色请求错误,这就是我得到的:“asPercent 第二个参数必须准确引用 1 系列”..
    • @xpan 我猜你在博客文章中没有看到我描述使用 mapSeries 和 reduceSeries 做同样的事情?使用示例查询更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2015-05-10
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多