首页/云/可观测性速查/路由树:continue 与子路由匹配顺序
告警与响应50 条

路由树:continue 与子路由匹配顺序

route 从根节点开始匹配,命中子路由即停止(continue: true 例外);用子路由按 severity、team 等标签分流到不同接收器,越具体的匹配越靠前。

可观测性速查云更新于 2026-10-13

路由树是什么

接收端用一棵路由树决定告警往哪里送:根节点给出默认接收器与分组方式,子路由按标签条件分流。告警从根开始逐层匹配,命中的第一个子路由接管它,并由该节点的配置决定分组与通知节奏。

匹配顺序

匹配是自上而下的深度优先:先看父节点的子路由列表,按书写顺序逐个尝试,命中即进入该子树。因此规则要按从具体到宽泛排列,否则前面一条宽泛规则会把后面所有更精确的规则挡在外面,且不会报错。

继续匹配的用途

在匹配到某条子路由之后仍要继续检查后面的兄弟路由,需要显式打开继续匹配开关。它常用在一个告警要同时通知值班与业务群组的场景:既走电话通道,也发到对应团队群,两边都能看到。

基本信息

结构根路由加多层子路由,形成树形结构
匹配依据告警标签与匹配表达式
默认接收器根节点的接收器作为兜底
分组配置每个节点可以覆盖分组维度与等待时间
继承规则子节点未配置的项目从父节点继承

典型使用场景

  • 按严重级别分流:最高级走电话,其余走即时消息或工单
  • 按团队分流:不同团队接收各自负责的告警
  • 按环境分流:生产进值班通道,测试环境只留痕
  • 同时通知多方:用继续匹配把告警同时送到值班与业务群
  • 配合静默与抑制:在路由层区分需要抑制的类别
  • 兜底通道:根节点接收器保证没有告警被静默丢弃

路由示例

路由示例
route:
  receiver: default-im                 # 兜底接收器
  group_by: [alertname, cluster]
  routes:
    - matchers: [ 'severity="critical"' ]
      receiver: pager                  # 最高级走电话
    - matchers: [ 'team="search"' ]
      receiver: search-im
      continue: true                   # 同时继续匹配后面的规则
    - matchers: [ 'severity="warning"' ]
      receiver: warn-im

路由字段

字段作用注意
匹配表达式筛选该子路由负责的告警按具体到宽泛排列
接收器命中后告警发给谁需提前确认通道可用
分组方式决定通知合并的维度子节点未写则继承父节点
等待时间首次通知前的等待用于等待同组告警聚齐
继续匹配命中后是否继续检查兄弟路由开启后会产生多份通知

常见配置问题

问题后果处理方式
宽泛规则写在前面后续规则永不生效把宽泛规则放到最后
分组键过细通知数量暴涨按一起处置的维度分组
接收器不可用告警静默丢失定期核对通道可用性
覆盖关系混乱实际分组与预期不符先画清整棵树再改配置

改动路由的做法

  • 改前先画清整棵树,确认每个节点的分组与接收器
  • 用查询工具确认某条告警最终会走哪条路径
  • 路由改动必须评审,它直接决定告警能否送达
  • 为关键级别保留独立通道,不与低级别共用
路由只决定送到哪里,不决定是否触发:阈值与表达式仍在规则文件里,排障时先确认上游是否已经推送告警。
一条没有条件的兜底规则写在前面会吞掉后面所有规则:顺序必须按从具体到宽泛排列,改动后要逐条验证。
路由树的层次不宜过多:三层以上时很容易忘记某条规则被谁覆盖,维护成本会超过它带来的分流收益。

易错点

  • 子路由顺序错误:精确规则被宽泛规则挡住,告警全部涌向默认通道
  • 继续匹配滥用:同一告警被多次通知,接收方无法判断主次
  • 分组键与团队维度不一致:团队收到大量无关告警,逐渐脱敏
  • 路由改动不做验证:告警在配置里消失,故障发生时才发现没人收到

数据来源与参考

  • Alertmanager 文档 · Route
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌