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

如何通过Prometheus配置将单告警发送至多个Slack频道?

实现Prometheus告警同时推送至多个Slack频道的可行方案

问题背景

当前已配置Prometheus的vs_slave_status告警通过Alertmanager发送至slack_monitoring_prod频道,需求是将该告警同时推送至critical_dwh频道。尝试在告警规则中添加重复severity标签的方式不可行——YAML不允许重复键,后定义的标签会覆盖前一个,无法实现多频道推送。

可行解决方案

方案1:新增专属标签,通过多路由匹配

在Prometheus告警规则中新增一个自定义标签(如team: dwh),然后在Alertmanager中配置两个独立路由分别匹配对应条件。

修改后的prometheus.yml:

groups:
  - name: vs_replica_sql_slave_status
    rules:
      - alert: vs_slave_status
        for: 2m
        expr: mysql_global_status_slave_running{instance=~"vs-replica.+",alias!~"vs-replica-test"} == 0
        labels:
          severity: "critical"
          team: "dwh"  # 新增自定义标签
        annotations:
          identifier: "{{ $labels.alias }}"
          description: "Slave Status not running"

修改后的alertmanager.yml:

routes:
  # 原有路由:所有critical级别告警发至slack_monitoring_prod
  - match:
      severity: critical
    receiver: slack_monitoring_prod
  # 新增路由:匹配vs_slave_status告警+team=dwh标签,发至critical_dwh
  - match:
      alertname: vs_slave_status
      team: dwh
    receiver: critical_dwh

方案2:利用Alertmanager的continue字段实现路由穿透

无需修改Prometheus配置,通过开启路由的continue: true,让告警匹配当前路由后继续匹配后续路由,结合告警名称匹配实现多频道推送。

修改后的alertmanager.yml:

routes:
  # 原有路由,开启continue让告警继续向下匹配
  - match:
      severity: critical
    receiver: slack_monitoring_prod
    continue: true
  # 匹配特定告警名称,推送至critical_dwh
  - match_re:
      alertname: ^vs_slave_status$
    receiver: critical_dwh

方案3:创建聚合接收器统一推送

在Alertmanager中定义一个包含两个Slack频道配置的聚合接收器,将vs_slave_status告警直接路由到该接收器,一次性推送至两个频道。

修改后的alertmanager.yml:

receivers:
  # 原有Slack接收器
  - name: slack_monitoring_prod
    slack_configs:
      - channel: "#slack_monitoring_prod"
        api_url: "your-slack-webhook-url"
        # 其他Slack配置(如标题、模板等)
  # 新增critical_dwh接收器
  - name: critical_dwh
    slack_configs:
      - channel: "#critical_dwh"
        api_url: "your-slack-webhook-url"
        # 其他Slack配置
  # 聚合接收器:包含两个频道的配置
  - name: vs_slave_multi_channel
    slack_configs:
      - channel: "#slack_monitoring_prod"
        api_url: "your-slack-webhook-url"
        # 对应slack_monitoring_prod的配置
      - channel: "#critical_dwh"
        api_url: "your-slack-webhook-url"
        # 对应critical_dwh的配置

routes:
  # 优先匹配vs_slave_status告警,使用聚合接收器
  - match:
      alertname: vs_slave_status
    receiver: vs_slave_multi_channel
  # 保留原有路由,处理其他critical级别告警
  - match:
      severity: critical
    receiver: slack_monitoring_prod

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:30:44