首页 > 解决方案 > Prometheus:使用正则表达式减少重复规则

问题描述

在 Prometheus 记录规则中,我想记录我每个 Jenkins 作业中的作业失败率。

这个表达式将允许我这样做。MyJenkinsJob_1 的失败率。

 ( sum(jenkins_job_last_build_failed_tests{jobname="MyJenkinsJob_1"})
                or (absent(jenkins_job_last_build_failed_tests{jobname="MyJenkinsJob_1"})*0) )
          /
( sum(jenkins_job_last_build_total_tests{jobname="MyJenkinsJob_1"})
                or (absent(jenkins_job_last_build_total_tests{jobname="MyJenkinJobs_1"})*0) )

由于逻辑(方程式)对所有工作都是通用的!,我可以通过更改变量值jobname来使用相同的表达式。

我们可以用一些 reg 表达式来做到这一点,这样我就不必反复硬编码(创建新规则)Jenkins 作业名称(例如:MyJenkinsJob_1、MyJenkinsJob_2、MyJenkinsJob_3、......)。Prometheus 中是否有任何可用的功能!

标签: prometheusprometheus-operatorprometheus-alertmanagerprometheus-net

解决方案


对于这个特定的查询,这是不可能的,因为您需要提供jobname应该以某种方式存在的所有值的列表。我建议查看对您的配置管理系统的模板支持,以便为您生成规则。


推荐阅读