首页 > 解决方案 > PromQL 中具有时间偏移的两个指标之间的差异

问题描述

我有一个 metric (gauge) updated,它的module标签设置为模块的名称。模块在成功执行“更新”(无论它是什么意思)后,现在将其设置为 UTC。其中一个模块(称为“主”)必须在不迟于(例如,在任何其他模块更新后 10 分钟)执行更新。

尝试 #1从“主要”指标中提取所有其他指标的最大值:

(max(updated{module="main"}) - max(updated{module!~"main"}))

它部分有效。它在“其他”指标已更新但“主要”尚未更新的时间段内失败:

在此处输入图像描述

尝试#2

选择偏移 10 分钟的“其他”指标,因此我们总是将“主”更新时间与当前最新的“其他”指标更新时间进行比较 - 10m 时刻,这让“主”模块有 10 分钟的时间来完成它的工作:

(max(updated{module="main"}) - max(updated{module!~"main"} offset 10m))

结果也不好:

在此处输入图像描述

现在我们在更新之间有很大的延迟(在这种情况下为 8K 秒),因为我们从当前的“主要”时间中减去了一个太旧的“其他”更新时间。

我是 PromQL 的新手,所以很可能我错过了一些简单的基本方法。

标签: prometheuspromql

解决方案


推荐阅读