如何在 Prometheus 中正确地将丢失的数据点转换为 0?

MrD*_*Duk 6 time-series prometheus

我们有一个警报,我们希望根据之前5m的指标(例如,如果它高于 0)触发。但是,如果指标是,0它不会写入普罗米修斯,因此不会在该时间段内返回。

结果是我们可能有一个示例数据集:

-60m  |  -57m  |  -21m  |  -9m  |  -3m    <<< Relative Time
   1  ,  0    ,    1    ,  0    ,  1      <<< Data Returned
Run Code Online (Sandbox Code Playgroud)

这最终导致每次指标高于0时触发警报,而不仅仅是当它高于05m。我已经尝试将我们的查询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]
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它将“真实”数据放在数组的前面(即使我的开始时间早于1539021420)并从该时间戳向前继续。

让 Prometheus 返回0可能不存在的数据点的正确方法是什么?

需要明确的是,这不是警报管理器的问题——我正在使用不同的工具来对这些数据发出警报。