我试图在普罗米修斯中计算过去一小时内有多少值 == 0 并尝试创建警报规则。
我想出了规则 count_over_time(instance==0 [1h])/count_over_time(instance)
我得到错误显示我必须遵循 Prometheus 聚合器表达式。
不知道背后的原因是什么。
非常感谢您的帮助。
我试图在普罗米修斯中计算过去一小时内有多少值 == 0 并尝试创建警报规则。
我想出了规则 count_over_time(instance==0 [1h])/count_over_time(instance)
我得到错误显示我必须遵循 Prometheus 聚合器表达式。
不知道背后的原因是什么。
非常感谢您的帮助。
指出查询中的一些错误:
instance==0 [1h]
:范围选择只能在即时向量上进行,而不是表达式。即,instance[1h]
是有效的,但不是提到的那个。你需要的是一个subquery,看起来像(instance==0)[1h:1m]
(选择你的分辨率)。
count_over_time(instance)
:count_over_time
需要一个范围向量,所以不能在instance
这里使用,它是一个即时向量。
现在来到您预期的查询,我的理解是您想知道instance
在过去 1 小时内有多少百分比的系列结果为 0 并对其发出警报,因为我建议在定义警报时借助for
标签,例如:
groups:
- name: example
rules:
- alert: ExampleAlert
expr: count(instance == 0)/count(instance) > 0.5
for: 1h
annotations:
description: "Count of (instances==0) is >50% of instances for more than 1h."
在这里,如果比率是> 0.5 (50%)
直线1h
,它会发出警报。