使用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文档,但尚未找到解决方案。
答案 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])