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

如何在Prometheus中通过正则动态为所有告警添加'team'标签?

实现批量为Prometheus告警添加动态'team'标签

你可以通过两种方式批量实现这个需求,不用逐个修改告警表达式:

方案一:在Prometheus采集阶段预处理指标(全局生效)

这种方式会在指标进入Prometheus前就添加上team标签,所有基于这些指标的告警自动继承该标签,一劳永逸。

编辑Prometheus的配置文件,在对应的采集任务(比如你的kube-state-metrics)下加入relabel_configs规则:

scrape_configs:
  - job_name: 'kube-state-metrics'
    # 保留原有采集配置(比如静态配置、服务发现等)
    relabel_configs:
      # 先匹配container标签含test的指标,添加team=data
      - source_labels: [container]
        regex: '.*test.*'
        target_label: team
        replacement: 'data'
        action: replace
      # 若container没匹配上,再匹配pod标签含test的情况,补加team=data
      - source_labels: [pod]
        regex: '.*test.*'
        target_label: team
        replacement: 'data'
        action: replace
        condition: 'team !~ .+' # 仅当team标签还未设置时执行

如果要对所有采集任务生效,把这段relabel_configs放到全局配置的relabel_configs节点下即可。

方案二:在Alertmanager路由阶段添加告警标签

如果不想改动Prometheus的采集配置,可以在Alertmanager层面,给所有告警统一添加标签:

编辑Alertmanager配置文件,在route节点下加入label_replacements规则:

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'default-receiver'
  # 批量添加team标签的规则
  label_replacements:
    - source_labels: [container]
      regex: '.*test.*'
      target_label: team
      replacement: 'data'
    - source_labels: [pod]
      regex: '.*test.*'
      target_label: team
      replacement: 'data'
      condition: 'team !~ .+' # 避免覆盖已存在的team标签

这种方式只在告警流转时添加标签,不会影响原始指标的标签内容。

方案对比

  • Prometheus采集阶段处理:标签会附加到原始指标上,查询指标时也能看到,适合需要全局指标标签的场景。
  • Alertmanager路由阶段处理:仅作用于告警,原始指标不受影响,适合只需要告警带标签的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:42:25