上游模型抖动三分钟,监控在两分钟内发出 800 条 429 告警,值班群被刷屏,真正的 500 错误反而没人看到,复盘时发现告警没有做聚合与抑制。
排查方向其实有限,先把可能性排一排。每条失败请求都触发一次告警;没有按告警名做抑制与聚合;恢复通知也逐条发送;值班群没有分级路由。
上来先按告警名与实例聚合
python alert_rule.py --group-by alertname,instance
主告警触发时抑制衍生告警
python alert_rule.py --inhibit HighErrorRate
恢复通知只发汇总
python alert_rule.py --repeat 30m
等前面都确认过,再用压测触发一次验证收敛
python fire_err.py --count 500
改之前先确认了最近有没有人动过配置,避免白查一遍。
别只看报错消失,验证要多做一步。同样规模的抖动只产生一条聚合告警和一条恢复通知,值班群消息数下降九成,关键错误仍可检索。
这里还有个坑。告警系统要能扛住故障本身,数量比准确性更容易先崩,聚合与抑制要在规则层做。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
