我有一个在 Prometheus 中有多个时间序列的指标。我想用默认值(比如 0)来填补这个指标中的空白。最好的方法是什么?
OR
与 vector(0)
不起作用,因为有多个时间序列 - Prometheus 所做的就是给我一个始终为 0 的新时间序列。我也不想使用记录规则。
pinot_server_llcPartitionConsuming_Value{} OR vector(0)
结果如下:
要填补空白,不超过1小时,可以使用类似查询
metric or last_over_time(metric [1h]) * 0
如果找到,此查询将返回指标。如果没有,它将获取最新的度量样本(以简单地保留所有标签)并返回它乘以 0。
请注意,显示的查询实际上并不检查“间隙”。即使指标“消失”(例如,由于目标不可用),它也会继续生成值一小时。
如果您确实需要专门检查间隙,则需要围绕替换实施检查。它可能看起来像
metric
or (
last_over_time(metric [1h]) * 0
and last_over_time(timestamp(up)[1h:1m] offset -1h) > time()
)
这里,仅如果在计算可能的替换的时间戳后一小时内再次报告指标,则会发生 0 替换。