Prometheus 管理普罗米修斯对pushgateway的限制';最近的刮伤时间

Prometheus 管理普罗米修斯对pushgateway的限制';最近的刮伤时间,prometheus,Prometheus,我看到过其他线程/帖子(在github、stackoverflow上),其中人们要求prometheus能够根据度量的时间戳(上次推送到pushgateway时)过滤或将度量标记为过时/过期。这似乎违背了普罗米修斯的工作方式,这很好。然而,我想知道人们是如何解决这个问题的 我尝试了一些东西,但不幸的是没有成功: 在包含历元时间的度量中添加了标签。使用此标签值过滤度量(或将度量值更新为指示度量为过时状态)以指示。 我发现这会导致标签值是字符串,但无法将其转换为整数,以便根据当前时间进行比较(例

我看到过其他线程/帖子(在github、stackoverflow上),其中人们要求prometheus能够根据度量的时间戳(上次推送到pushgateway时)过滤或将度量标记为过时/过期。这似乎违背了普罗米修斯的工作方式,这很好。然而,我想知道人们是如何解决这个问题的

我尝试了一些东西,但不幸的是没有成功:

  • 在包含历元时间的度量中添加了标签。使用此标签值过滤度量(或将度量值更新为指示度量为过时状态)以指示。
    • 我发现这会导致标签值是字符串,但无法将其转换为整数,以便根据当前时间进行比较(例如执行类似“time()-timestamp)>3600”的操作)
  • 使用作业的“push_time_seconds”度量可以识别上次按下的时间戳,并过滤或将数据标记为过时。我看到,每当用户推送数据时,普罗米修斯就会自动添加这个指标。例如,如果我要推送以下数据:

cat我发现了另一个基于PromQL的数据库,称为“Victoria Metrics”。我能够使用布尔运算符和“if”运算符来操纵push_last_seconds和我的查询来执行我想要的操作

我最终使用了两种方法:


  • 脚本/批处理作业->pushgateway VictoriaMetrics VictoriaMetrics是的,一些更多的详细信息肯定会对将来提到这一点的人有所帮助:)
    avg(SomeMetric{job="some_job"}) if (time() - push_time_seconds{job="some_job"} < 30)
    
    WITH (x = avg(SomeMetric{job="some_job"}), y = (NaN if 3 < 2) default 2) (y default 3)
    
    WITH (x = avg(SomeMetric{job="some_job"}), y = (NaN if (time() - push_time_seconds{job="some_job"} < 30)) default 2) (y default 3)