告警分流由Alertmanager根据告警标签(如severity)匹配路由实现,需在Prometheus规则中显式定义severity标签,并在Alertmanager中配置多级route、合理group_by及repeat_interval,同时确保receiver正确定义。

告警分流不是靠 Prometheus 本身完成的,而是由 Alertmanager 根据告警携带的标签(labels)做匹配和路由。关键在于:告警规则里要打上能体现“级别”的标签(比如 severity),然后在 Alertmanager 的 route 配置中用 match 或 match_re 做区分,再绑定不同的接收器(receiver)和分组策略。
在告警规则里定义 severity 标签
Prometheus 不会自动给告警加级别,必须在 rule 文件中显式声明。这是后续所有分流的前提:
- 用 labels: {severity: "critical"} 标记高优告警,比如服务不可用、核心节点宕机
- 用 labels: {severity: "warning"} 标记需关注但非紧急的问题,比如错误率上升、磁盘使用超 85%
- 可扩展其他值,如 "info" 或 "low",用于低频运维通知
- 避免只写文字不打标——没标签,Alertmanager 就无法识别级别
在 Alertmanager 中配置多级 route 分支
route 是树形结构,从上到下逐条匹配,优先匹配更具体的规则。典型分层方式如下:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 根 route 设为兜底,比如发邮件给值班群:receiver: "default-email"
- 第一层子 route 匹配 severity: "critical",指向电话+钉钉机器人:receiver: "oncall-pager"
- 第二层匹配 severity: "warning",只推送到企业微信群:receiver: "devops-group"
- 可用 match_re 批量处理,例如 severity: "critical|warning" 统一设置 group_by: [alertname, instance]
配合 group_by 和频率控制减少干扰
同级别告警如果没合理分组,仍可能刷屏。需结合业务语义设置 group_by,并调优等待与重发间隔:
- critical 告警建议 group_by: [alertname, instance],保证每台故障机器单独通知,不合并
- warning 告警可 group_by: [alertname, env],把同一环境同类问题聚合成一条
- critical 设置 repeat_interval: 15m,确保未恢复时高频提醒
- warning 设置 repeat_interval: 2h,避免重复打扰
对接不同渠道前确认 receiver 已正确定义
每个 route 中的 receiver 名称,必须在 receivers 区块中真实存在,且配置对应通道:
- 邮件 receiver需填 SMTP 地址、认证信息、收件人列表
- 钉钉 receiver要提供 Webhook URL 和可选的 secret
- 电话 receiver(如 PagerDuty 或自建语音网关)需集成 API 密钥和号码映射
- 测试时可用 webhook receiver 输出 JSON 到本地日志,验证路由是否命中










