【发布时间】:2020-03-29 15:27:17
【问题描述】:
我看到其他线程/帖子(在 github,stackoverflow 上),人们在 prometheus 中请求了能够根据指标的时间戳(最后一次推送到 pushgateway 时)过滤或标记指标为过时/过期的功能。似乎这违背了普罗米修斯的工作方式,这很好。但是,我想知道人们是如何解决这个问题的。
我一直在尝试一些事情,但不幸的是没有成功:
- 在包含纪元时间的指标中添加了一个标签。使用此标签值过滤指标(或将指标的值更新为指示指标过时的某些状态)以进行指示。
- 我发现这会导致标签值在字符串中,但无法将其转换为整数以根据当前时间进行比较(例如执行“time() - timestamp) > 3600”之类的操作)。
- 使用作业的“push_time_seconds”指标能够识别上次推送的时间戳,并将数据过滤或标记为过时。每当用户推送数据时,我都会看到这个指标自动添加到 prometheus 中。例如,如果我要推送以下数据:
猫
我在 pushgateway 指标中看到以下指标:
push_time_seconds{instance="",job="test"} 1.5754837280426762e+09 some_metric{instance="",job="test",label1="value1",label2="value2"} 5
但是,我不知道如何构建一个 PromQL 查询,该查询将使用 push_time_seconds 指标来更新 some_metric 中的值。就像 push_time_seconds 超过一个小时一样,将 some_metric 的值设置为 0。
有人对此有什么建议吗?
【问题讨论】:
标签: prometheus