获取验证码
Alertmanager通过树形Route路由结构分发Prometheus推送的告警,整套路由匹配核心依靠标签匹配规则实现;根路由作为统一入口,下挂多层子路由,每条路由配置匹配label条件,告警自上而下逐层校验标签,命中对应路由后执行分组、去重、发送至指定接收器,未匹配任何子路由的告警由根路由兜底处理。
Alertmanager路由树底层逻辑为多级树形结构+标签匹配过滤,所有告警从根路由进入,自上而下依次匹配各子路由label规则;标签完全命中则进入当前分支,可嵌套多层子路由实现按业务、级别、集群、团队拆分告警分发,未匹配分支统一走根路由接收器兜底。
有VMware全系列产品官方资源和定制版资源需求的可以移步:
1. 根route(顶层入口)
全局唯一根路由,所有告警强制进入根路由;必须配置全局分组、等待时间、重复告警间隔、兜底接收器;根路由无匹配过滤规则,接收全部告警。
2. 子路由child_routes(树形分支)
根路由下可定义多条同级子路由,每条子路由独立配置match/match_re标签匹配条件;子路由内部还能嵌套多层child_routes,形成多级树形路由,实现多维度筛选。
3. 路由匹配终止机制
告警匹配到某一条子路由后,默认不再向下遍历其他同级子路由;如需多分支同时分发,可设置continue: true继续匹配后续路由分支。
1. match 精准等值匹配
指定label固定键值对,告警必须同时拥有全部匹配标签才命中该路由;示例:match: {env: "prod", severity: "critical"},仅生产环境严重告警匹配。
2. match_re 正则模糊匹配
支持正则表达式匹配标签值,适用于多集群、多业务模糊分组;示例:match_re: {instance: "web.*|api.*"},匹配web和api开头实例告警。
3. 匹配逻辑优先级
精准match > 正则match_re,同一条路由可同时组合两种匹配规则,告警需全部满足条件才可进入分支。
4. 标签来源
标签来自Prometheus告警规则labels字段,包含环境、业务、集群、告警级别、服务名等维度,是路由分发的唯一判断依据。
1. Prometheus触发告警推送至Alertmanager,携带规则定义的全部labels;
2. 告警进入顶层根路由,执行全局分组、初始等待;
3. 自上而下遍历根路由下所有一级子路由,校验match/match_re标签;
4. 匹配成功进入对应分支,若该分支存在嵌套子路由则继续深层标签筛选;
5. 到达末端叶子路由后,使用当前路由配置的receiver推送告警;
6. 若所有子路由均未匹配,告警使用根路由兜底接收器发送;
7. 配置continue: true时,匹配完成后继续遍历剩余同级路由,实现一条告警多渠道分发。
1. group_by 告警分组
同一路由下按指定标签聚合多条同类告警,合并为一条通知,避免告警风暴刷屏;常用分组标签:alertname、instance、service。
2. group_wait / group_interval
group_wait:首次告警等待聚合时间,收集短时间批量告警再发送;group_interval:同组新告警追加通知间隔。
3. repeat_interval
持续未恢复的故障告警重复推送间隔,防止故障长时间无人处理。
4. inhibit_rule 告警抑制
路由分发前拦截衍生告警,如节点宕机抑制该节点下所有实例告警,减少无效通知;依靠源告警与目标告警标签匹配关联。
5. silence 静默规则
基于标签匹配临时屏蔽指定告警,维护期间避免大量无效推送,不改变路由分发逻辑。
根路由 → 一级子路由(按环境区分prod/test/dev)
├─ prod生产子路由(match: {env: "prod"})
│ ├─ 二级子路由critical严重告警(match: {severity: "critical"},推送电话+钉钉)
│ └─ 二级子路由warning警告告警(match: {severity: "warning"},仅钉钉推送)
├─ test测试子路由(match: {env: "test"},统一推送测试群)
└─ dev开发子路由(match: {env: "dev"},仅本地开发通知)
未匹配环境标签告警由根路由统一兜底发送运维总群。
1. 误区:子路由匹配后会继续遍历其他同级路由
纠正:默认匹配即终止同级遍历,需开启continue: true才会继续匹配剩余分支。
2. 误区:match与match_re标签满足其一即可匹配路由
纠正:同路由内两种匹配规则是逻辑与关系,必须全部满足才命中。
3. 误区:根路由可以配置match过滤特定告警
纠正:根路由不支持match/match_re,接收集群全部告警,过滤只能放在子路由。
4. 误区:标签匹配仅能使用固定等值,无法批量匹配多业务线
纠正:match_re正则可模糊匹配标签,适合大批量同类型业务统一路由。
5. 误区:inhibit抑制规则属于路由树分支配置
纠正:抑制规则是全局独立配置,在告警进入路由树之前完成拦截过滤。
Alertmanager路由树核心原理为多级树形分支+标签label匹配过滤,所有告警从根路由统一流入,自上而下校验各子路由match、match_re标签条件实现告警分层分发;支持多层嵌套子路由、continue多分支分发,结合分组、抑制、静默能力实现告警收敛、按业务/级别/环境精准推送,是Prometheus监控告警体系分发调度的核心组件。