使用PromQL查询多个应用的​​正常运行时间汇总

时间:2019-05-21 16:11:50

标签: grafana prometheus

使用PromQL,我试图查询多个应用的​​正常运行时间,并使用Grafana对其进行可视化。

我想要的是拥有两个应用程序正常运行时间的“和”(我不知道这是否是正确的术语),因此,如果所有,查询中给定的应用程序已启动,否则为0。最后,我想要一个值,向我显示最近30天的平均正常运行时间

这给了我一个应用程序的需求(我需要clamp_max> 0,但这在这里并不重要)。

avg_over_time((max by (job)(clamp_max(up{space="$space",job="job1"},1)) )[30d:5m]) > 0

如何结合这两个查询,以便获得所需的结果?我已经咨询了PromQL文档,但尚未找到解决方案。

1 个答案:

答案 0 :(得分:0)

可以通过测试up目标的总和等于目标数目(省略过滤器和聚合)来计算PromQL,以指示是否所有应用程序在任何时间点都处于up状态。

count(up) == bool sum(up)

== bool将产生标量that is either 0 (false) or 1 (true), depending on the comparison result

然后您可以按照指示计算平均值:

avg_over_time((count(up) == bool sum(up))[30d:5m])

通过过滤,表达式变为

avg_over_time((count(up{job=~"job[12]"}) == bool sum(up{job=~"job[12]"}))[30d:5m])