Helm部署kube-prometheus-stack时能否在values.yaml为Exporter配置规则?
问题1解答
只要你使用的是prometheus-community维护的官方prometheus-blackbox-exporter Helm chart,这种通过额外values文件配置告警规则的方式是可行的,官方chart内置了PrometheusRule资源的渲染模板,会根据你传入的prometheusRule参数自动创建对应CRD资源。
问题2解答
你的rules-mine.yaml存在两处需要修正的点,这也是你看不到规则的核心原因:
- 存在重复声明的字段:
prometheusRule层级下两次定义了namespace字段,虽然两次值相同未触发异常,但属于不规范的YAML写法,建议删除冗余的一条 - 标签匹配问题:你为PrometheusRule配置的
additionalLabels需要和你的Prometheus实例的ruleSelector配置完全匹配,Prometheus只会加载符合标签选择器的PrometheusRule资源。你可以先执行kubectl get prometheusrule -n monitoring确认规则资源是否成功创建,如果资源存在但Prometheus没加载,就是ruleSelector不匹配的问题。
另外你的告警规则表达式、模板转义写法都是正确的,没有问题。
问题3解答
有两种高效管理多Exporter告警规则的方案,均支持Terraform IaC实现:
- 规则与Exporter绑定部署:沿用你当前的思路,每个Exporter的部署配置自带对应的告警规则,在Terraform中使用
helm_release资源部署各Exporter时,传入对应规则的values文件即可,规则和Exporter生命周期同步,适合各Exporter规则差异大、归属不同团队维护的场景 - 规则统一独立部署:把所有Exporter的告警规则统一管理,单独封装为独立的规则包,通过Terraform的
kubernetes_manifest资源批量创建PrometheusRule,或者打包为独立Helm chart统一部署,适合团队需要统一管控所有告警规则的场景;如果你用了kube-prometheus-stack,也可以直接在该chart的values中通过additionalPrometheusRules字段批量注入所有规则,实现统一管理。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

