我们有一个警报,希望根据先前的5m
指标(例如,如果该值大于0)触发。但是,如果度量标准为0
,则不会将其写入prometheus,因此在该时间段内不会返回。
结果是我们可能有一个示例数据集:
-60m | -57m | -21m | -9m | -3m <<< Relative Time
1 , 0 , 1 , 0 , 1 <<< Data Returned
最终会导致每次度量标准高于0
时都会触发警报,不仅是对于0
而言,它还高于5m
。我尝试写在末尾的OR on() vector()
后面写我们的查询,但是它对返回的数据集做一些有趣的事情:
values:Array[12]
0:Array[1539021420,0.16666666666666666]
1:Array[1539021480,0]
2:Array[1539021540,0]
3:Array[1539021600,0]
4:Array[1539021660,0]
5:Array[1539021720,0]
6:Array[1539021780,0]
7:Array[1539021840,0]
8:Array[1539021900,0]
9:Array[1539021960,0]
10:Array[1539022020,0]
11:Array[1539022080,0]
由于某种原因,它会将“真实”数据放在数组的开头(即使我的开始时间早于1539021420
),并从该时间戳记开始继续进行。
对于可能不存在的数据点,让Prometheus返回0
的正确方法是什么?
要清楚,这不是Alertmanager的问题-我正在使用其他工具来对此数据进行警报。