You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为prometheus-community/prometheus Chart告警规则自动注入固定标签

可行实现方案

要满足「告警规则注解中可直接引用公共标签」的需求,标签必须在Prometheus渲染注解模板前完成注入,优先选择以下方案:

方案1:配置Prometheus全局外部标签(最推荐)

这是Prometheus原生支持的全局标签机制,改造成本最低,external_labels中定义的标签会自动添加到所有对外输出的数据中,包括触发的告警、远程写入的指标、联邦采集的指标等,且告警规则注解模板可以直接读取到对应值。

Helm Chart配置方式

在部署prometheus-community/prometheus使用的values.yaml中添加以下配置即可:

server:
  global:
    external_labels:
      env: prod
      cluster: project-prod-eks

升级Chart生效后,所有告警规则无需手动添加这两个标签,注解中的{{ $labels.env }}和{{ $labels.cluster }}会自动渲染为对应值。

优势

  • 配置一次全局生效,无需修改任何现有告警规则
  • 原生能力稳定可靠,无额外适配成本
  • 多集群/多环境场景下可直接通过标签区分不同实例的告警和指标

方案2:Helm模板统一注入公共标签(适合自定义告警规则场景)

如果你不希望全局指标都携带这两个标签,且告警规则是通过Helm模板自定义维护的,可以将公共标签定义为全局变量,在所有告警规则的labels块统一引入。

配置方式

  1. 在values.yaml中定义公共标签变量:
commonAlertLabels:
  env: prod
  cluster: project-prod-eks
  1. 在告警规则模板中引用变量:
groups:
- name: nginx.rules
  rules:
  - alert: NGINXTooMany400s
    expr: 100 * ( sum( nginx_ingress_controller_requests{status=~"4.+"} ) / sum(nginx_ingress_controller_requests) ) > 5
    for: 1m
    labels:
      severity: warning
      {{- toYaml .Values.commonAlertLabels | nindent 6 }}
    annotations:
      description: Too many 4XXs on {{ $labels.env }} / {{ $labels.cluster }}
      summary: More than 5% of all requests returned 4XX, this requires your attention

优势

  • 灵活性高,可针对部分告警规则选择性添加公共标签
  • 标签在规则定义阶段生效,支持注解中正常引用

劣势

  • 需要调整现有告警规则的模板代码,改造成本高于方案1

其他可选方案(不支持注解引用标签,仅作补充)

如果你的需求仅为最终告警通知携带公共标签,不需要在告警规则注解中引用,可以选择以下方案,但无法满足你当前的注解引用需求:

  • 配置Prometheus的alert_relabel_configs:在告警发往Alertmanager前为所有告警追加标签,注解渲染阶段无法读取到该部分标签
  • 配置Alertmanager的alert_relabel_configs:在Alertmanager接收到告警后追加标签,仅影响最终通知携带的标签

内容的提问来源于stack exchange,提问作者DmitrySemenov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:45:02