限流保护人与通道
限流要分两端做:Alertmanager 侧用分组与重复间隔控制节奏,把同一故障的多条告警合并后再发;自建中继侧设并发与频率上限,超出的消息合并为摘要并在下一窗口重发。限流的目标不是丢消息,而是可持续投递——先保证高优先级与恢复通知不丢,再让低优先级消息排队等待。
三层限流位置
| Alertmanager 侧 | group_wait、group_interval、repeat_interval 与 max_alerts |
|---|---|
| 中继侧 | 幂等(groupKey)、令牌桶限速、失败指数退避重试 |
| 通道侧 | 平台自身频控与配额,例如群机器人每分钟条数上限 |
中继限速参考
中继限速参考
每通道令牌桶: 突发 20 条, 匀速 10 条/分钟
超限处理: 合并为摘要,下一窗口重发
优先级: resolved 高于 firing,P0 高于 P2
失败处理: 指数退避重试,记录失败计数供告警参数对照
| 参数 | 作用 | 调大 / 调小的效果 |
|---|---|---|
| group_wait | 首次通知前的等待时间 | 调大更易合并,但延迟增加 |
| group_interval | 同组后续通知的间隔 | 调大减少打扰,可能延迟新信息 |
| repeat_interval | 未确认告警的重复提醒间隔 | 调小更吵,调大可能被遗忘 |
| max_alerts | 单条通知内最多包含的告警数 | 过大消息被平台截断 |
限流策略
- 按级别分配配额:P0 与恢复通知占用独立桶,不被低优先级挤占
- 合并策略以 groupKey 为幂等键,避免同一故障重复入队
- 限流触发本身要可观测:记录被限流消息数并设置阈值告警
- 通道侧限流与中继侧配合,避免只在最末端丢弃消息
限流把首次 firing 延后到错过处置窗口是最危险的;优先级分级要先定清楚,绝不能让最高级别告警排在低优先级的消息后面。
实施要点
- 按通道分别设限,关键通道使用独立配额不被其他通道挤占
- 记录限流触发次数与时间,作为容量与阈值调整的依据
- 限流参数变更前先算清最坏情况下的通知延迟上限