管理 pushgateway 最近抓取时间的 prometheus 限制
Posted
技术标签:
【中文标题】管理 pushgateway 最近抓取时间的 prometheus 限制【英文标题】:Managing prometheus limitation of pushgateway's recent scrape time 【发布时间】:2020-03-29 15:27:17 【问题描述】:我看到其他线程/帖子(在 github,*** 上),人们在 prometheus 中请求了能够根据指标的时间戳(最后一次推送到 pushgateway 时)过滤或标记指标为过时/过期的功能。似乎这违背了普罗米修斯的工作方式,这很好。但是,我想知道人们是如何解决这个问题的。
我一直在尝试一些事情,但不幸的是没有成功:
在包含纪元时间的指标中添加了一个标签。使用此标签值过滤指标(或将指标的值更新为指示指标过时的某些状态)以进行指示。 我发现这会导致标签值在字符串中,但无法将其转换为整数以根据当前时间进行比较(例如执行“time() - timestamp) > 3600”之类的操作)。 使用作业的“push_time_seconds”指标能够识别上次推送的时间戳,并将数据过滤或标记为过时。每当用户推送数据时,我都会看到这个指标自动添加到 prometheus 中。例如,如果我要推送以下数据:猫
我在 pushgateway 指标中看到以下指标:
push_time_secondsinstance="",job="test" 1.5754837280426762e+09 some_metricinstance="",job="test",label1="value1",label2="value2" 5
但是,我不知道如何构建一个 PromQL 查询,该查询将使用 push_time_seconds 指标来更新 some_metric 中的值。就像 push_time_seconds 超过一个小时一样,将 some_metric 的值设置为 0。
有人对此有什么建议吗?
【问题讨论】:
【参考方案1】:我发现了另一个基于 PromQL 的数据库,名为“Victoria Metrics”。我能够使用布尔和“if”运算符来操纵 push_last_seconds 和我的查询来做我想做的事。
我最终使用了两种方法:
脚本/批处理作业 -> pushgateway VictoriaMetrics 这将使用我在下面指定的布尔逻辑。 脚本/批处理作业 -> VictoriaMetrics 这完全消除了使用 pushgateway 的需要。如果有人想了解更多信息,请告诉我。
另一个查询(显然 'job' 属性是这里的关键):
avg(SomeMetricjob="some_job") if (time() - push_time_secondsjob="some_job" < 30)
做比较/布尔的例子:
WITH (x = avg(SomeMetricjob="some_job"), y = (NaN if 3 < 2) default 2) (y default 3)
两者结合:
WITH (x = avg(SomeMetricjob="some_job"), y = (NaN if (time() - push_time_secondsjob="some_job" < 30)) default 2) (y default 3)
【讨论】:
是的,一些更多的细节肯定会对将来提到这个的任何人有所帮助:)以上是关于管理 pushgateway 最近抓取时间的 prometheus 限制的主要内容,如果未能解决你的问题,请参考以下文章
Prometheus监控运维实战十一:Pushgateway
解析 Prometheus PushGateway 推送监控指标全流程
解析 Prometheus PushGateway 推送监控指标全流程
kubernetes之监控系统--prometheus+grafana+alertmanager
Flink监控信息写入到PushGateway出现 java.io.IOException: Response code from http xx was 200问题