如何忽略PromQL查询中丢失的数据点?

时间:2019-11-28 09:29:55

标签: prometheus promql

我正在尝试执行复杂的promql查询。 基本上,我想将过去1小时的平均值与过去3天的同一小时(平均值)进行比较:

rate(processing_time_sum[1h]) / rate(processing_time_count[1h]) / (
rate(processing_time_sum[1h] offset 1d) / rate(processing_time_count[1h] offset 1d) +
rate(processing_time_sum[1h] offset 2d) / rate(processing_time_count[1h] offset 2d) +
rate(processing_time_sum[1h] offset 3d) / rate(processing_time_count[1h] offset 3d) +
)/3

我的问题是,在前几天(周六,周日和节假日)的一个(或多个)没有数据时,我在整个查询中都收到“找不到数据点”错误。 我想要么忽略丢失的日子,要么使用有数据点的最后一天。

1 个答案:

答案 0 :(得分:0)

通常,在PromQL中执行类似a + b的操作时,其中b可能缺少a的某些标签组合,您可以将其写为:

a + (b or a * 0)

或者,在您的情况下,因为您正在使用除法和多个b指标(原样):

a / ((b1 or a) + (b2 or a) + (b3 or a)) * 3

但是缺少更多的b指标,您的a指标就越“正常”。 (例如,如果前3天中没有任何值,则结果为1。)

或者,如果您只是想用数据点作为最后一天的话(同样,如果缺少所有a,则退回到b):

a / (b1 or b2 or b3 or a)