首页 > 解决方案 > 是否可以确定目标上次上升/下降的时间?

问题描述

Prometheus 提供了up()告诉您目标是向上还是向下的功能。您可以使用在给定的时间段内计算这改变了多少次,changes()甚至可以使用它avg_over_time()来查看它的时间百分比。

但我想找出值发生变化的时间特别是找出目标上升(或下降)的时间。这可能吗?显然,我可以添加自己的指标,但如果可能的话,我宁愿不必为每个检测目标添加新指标。

标签: prometheus

解决方案


考虑以下示例:

time() - max_over_time(timestamp(changes(up[1m]) > 0)[24h:1m])

此查询基于在过去 N 分钟内发生任何更改的最大时间戳(1m在我的示例中)。从当前时间中减去将为您提供最新更新的秒数。确保您使用的间隔至少与您的刮擦间隔一样长,并且理想情况下更长一些,以覆盖任何错过的刮擦等。只需使用各种指标和间隔,然后选择最适合您的。

出于效率原因,您还可以考虑添加记录规则,例如:

groups:

- name: last-update
  rules:

  - record: last-update
    expr: |
      timestamp(changes(up[1m]) > 0)
        or
      last-update

推荐阅读