2. Alertmanager 基础回顾

在深入事故阈值复测之前,必须重新理解 Alertmanager 的核心运行机制。本节从架构、告警生命周期、分组/抑制/静默三个维度建立共识,确保后续阈值调整与复测策略建立在正确的系统认知之上。

2.1 Alertmanager 架构

Alertmanager 是 Prometheus 生态中负责告警路由、去重、分组与通知的独立组件。其架构可抽象为三个核心模块:接收层、路由与处理层、通知层。

架构要点: Alertmanager 不负责告警规则评估,只负责处理 Prometheus 推送过来的已触发告警。评估逻辑在 Prometheus Server 侧完成。
Alertmanager 核心架构 接收层 API / Webhook 告警去重 路由与处理层 路由树匹配 分组 / 抑制 / 静默 通知层 邮件 / Slack / PagerDuty 重复通知控制 数据流方向 Prometheus → 接收层 → 路由与处理层 → 通知层 → 接收人 持久化层 告警状态存储 配置层 alertmanager.yml 说明:路由层是阈值复测的核心影响区域,分组、抑制、静默机制在此层生效 阈值调整后需验证路由匹配与通知行为是否符合预期

2.2 告警生命周期

一个告警从产生到关闭经历多个状态转换。理解生命周期是判断阈值是否合理、是否需要复测的前提。

状态 含义 阈值复测关注点
Pending 告警规则已触发,但未满足 for 持续时间 for 时长是否过短导致误报?是否过长导致延迟?
Firing 告警条件持续满足,已发送到 Alertmanager 阈值是否过于敏感?是否在正常波动范围内?
Resolved 告警条件不再满足,自动恢复 恢复阈值是否与触发阈值有合理回差?
Silenced 被静默规则抑制,不发送通知 静默是否掩盖了真实问题?复测期间是否误用静默?
Suppressed 被抑制规则抑制,不发送通知 抑制规则是否过度?是否导致关键告警丢失?
复测提示: 阈值复测时,应重点观察告警从 Pending 到 Firing 的转换时间,以及 Resolved 后是否立即再次触发(抖动)。这两个指标直接反映阈值设置的合理性。

2.3 分组机制

分组(Grouping)将相似告警合并为一条通知,避免告警风暴。分组基于 group_by 标签配置。

# alertmanager.yml 分组配置示例
route:
  group_by: ['severity', 'cluster']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  receiver: 'ops-team'
参数 默认值 作用 阈值复测影响
group_wait 30s 等待同一组告警到达的缓冲时间 过短可能导致分组不完整,过长延迟通知
group_interval 5m 同一组告警的发送间隔 阈值复测期间建议缩短,便于观察
repeat_interval 4h 已发送告警的重复通知间隔 阈值复测期间可临时设为 10m 以加速验证

2.4 抑制机制

抑制(Inhibition)用于在高级别告警触发时,自动抑制低级别同类告警。典型场景:节点宕机时抑制该节点上的所有服务告警。

# 抑制规则示例
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['cluster', 'instance']
阈值复测风险: 抑制规则可能导致阈值调整后的告警被错误抑制,复测人员无法收到预期通知。建议在复测期间暂时禁用或放宽抑制规则,待验证通过后再恢复。

2.5 静默机制

静默(Silence)是运维人员手动设置的告警屏蔽规则,基于标签匹配。静默有到期时间,到期后自动失效。

静默类型 设置方式 复测场景使用建议
一次性静默 Alertmanager UI / API 用于已知维护窗口,复测期间应避免使用
定期静默 Silence 配置文件 复测前检查是否有定期静默覆盖了被测告警
过期静默 自动过期 过期静默不会影响告警,但建议清理避免混淆
分组 / 抑制 / 静默 协同工作流程 告警输入 分组 抑制 静默 通知输出 处理顺序:告警 → 分组 → 抑制 → 静默 → 通知 抑制和静默都会阻止通知发送,但抑制是自动规则,静默是手动设置 阈值复测时必须确认被测告警未被抑制或静默拦截

2.6 阈值复测与三大机制的关系

分组、抑制、静默直接影响阈值复测的观察结果。以下表格总结了复测时需检查的关键点:

机制 复测前检查项 复测中观察项 复测后恢复项
分组 确认 group_wait 是否过短 同一组告警是否合并正确 恢复 group_interval 和 repeat_interval 原值
抑制 检查是否有抑制规则覆盖被测告警 高级别告警触发时低级别是否被抑制 恢复抑制规则配置
静默 检查是否有活跃静默匹配被测告警 静默到期后告警是否正常触发 清理临时静默
最佳实践: 在阈值复测开始前,先通过 Alertmanager API 查询当前活跃的静默和抑制规则,确保被测告警路径畅通。复测完成后,恢复所有临时修改的配置参数。