当前位置: 首页 > 知识库问答 >
问题:

PromQL中具有时间偏移的两个指标之间的差异

封瑞
2023-03-14

我有一个度量(量规)更新,它有模块标签,该标签设置为模块的名称。模块在成功执行“更新”(无论它是什么意思)后,现在将其设置为UTC。其中一个模块(称为“main”)必须在任何其他模块更新后的10分钟内执行更新。

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

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

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

尝试#2

选择具有10分钟偏移量的“其他”度量,因此我们总是将“主”更新时间与当前-10米时刻的最新“其他”指标更新时间进行比较,这给了“主”模块10分钟的工作时间:

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

结果也不好:

现在我们在更新之间有一个巨大的延迟(本例中为8K秒),因为我们从当前的“主”时间中减去了一个太旧的“其他”更新时间。

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

共有1个答案

缑修齐
2023-03-14

请尝试以下ProMQ查询:

(max(updated{module="main"}) < max(updated{module!="main"}))
  and
(time() - max(updated{module!="main"}) > 10*60)

它的工作方式如下:

  1. max(已更新{module=“main”})

当这些查询与 运算符组合时,如果主模块在上次更新非主模块 10 分钟后仍未更新,则生成的查询将返回非空结果。请参阅 运算符 的文档和文档以了解时间()。

 类似资料:
  • 我刚开始使用普罗米修斯,我正在尝试理解一些事情。 我有一个Java的web应用程序,它公开了一个叫做“my_counter”的计数器。 下面的查询有什么区别? 如果我在1小时的相同时间间隔内运行这些查询,为什么两个查询返回不同的结果? 我试图实现的是看看计数器在一个可配置的时间段内增加了多少。 多谢了。 附注。我实际上使用Grafana来运行查询并选择时间范围。

  • 问题内容: 我必须找到java中两个不同日期对象之间的时间差异,如果该时间超过5秒,我必须使会话无效。 这是场景: 我有一个jsp页面,它每5秒设置一次会话 我还有另一个jsp页面,每1秒访问一次, 现在,我必须在我提到的另一个jsp中进行比较,并使会话无效, 因此,如果差异超过5秒,则会话无效。 问题答案:

  • 问题内容: 我在一个MySQL数据库表上工作,该表的列包含我对其他主机执行ping操作时的时间戳记(例如2014-09-16 09:08:05)。我的问题是如何在几分钟内计算出针对特定主机的第一次ping和最后一次ping之间的差异?另外,如何为上述差异的开始和结束指定不同的时间戳(而不是第一次和最后一次ping)。这是表格的示例: 我希望我已经对自己的解释足够清楚。 问题答案: 您可以使用本机的

  • 本文向大家介绍C ++中两个给定时间段之间的差异,包括了C ++中两个给定时间段之间的差异的使用技巧和注意事项,需要的朋友参考一下 问题陈述 以字符串'HH:MM:SS'格式给出两个时间段。在这里,“ HH”代表小时,“ MM”代表分钟,“ SS”代表秒。找到这两个时间段之间相同字符串格式的差异。 示例 以下是C ++中的程序,用于查找所需的输出。 输出结果

  • 问题内容: 我在-type字段中将上次登录时间存储在MySQL中。当用户登录时,我想获取上次登录时间与当前时间(我使用)之间的时差。 我该如何计算? 问题答案: 使用MySQL函数。例如,您可以使用: 在您的情况下,函数的第三个参数将是当前登录时间()。第二个参数是上次登录时间,该时间已在数据库中。

  • 问题内容: ‘Go’的新手。问题可能是最基本的问题。 我有两个time.Time对象,我想获得小时/分钟/秒这两者之间的差异。可以说: 在上述情况下,由于差为0。应该给我00:00:00。考虑另一种情况: 在这种情况下,差异将为00:05:41。我看了看https://godoc.org/time,但什么都做不了。 问题答案: 您可以用来获取2个值之间的差,结果将是的值。 打印时,格式本身会“智能