2. Grafana OnCall 架构简介:核心组件、数据流与告警生命周期
在落地告警降噪规则之前,必须理解 Grafana OnCall 的架构骨架。OnCall 并非一个孤立的告警接收器,而是一套围绕 路由、编排、通知 构建的事件驱动系统。本章将拆解其三大核心组件(Integration、Escalation Chain、Schedule),并串联完整的告警生命周期。
2.1 三大核心组件
Grafana OnCall 的架构可以抽象为三个层次:接入层(Integration)、编排层(Escalation Chain)、通知层(Schedule + 用户)。三者通过 Alert Group 对象串联。
| 组件 | 职责 | 类比 | 关键属性 |
|---|---|---|---|
| Integration | 接收外部监控系统(Prometheus、Grafana、Zabbix 等)的告警 Webhook,并将其标准化为 OnCall 内部的 Alert 对象。 | “翻译官” + “路由器” | 类型(Grafana、Prometheus、Webhook)、路由规则、模板(Templates) |
| Escalation Chain | 定义告警从产生到关闭的 处理步骤序列,包括通知谁、等待多久、是否升级、是否自动执行动作。 | “剧本” 或 “流程引擎” | 步骤类型(Notify、Wait、Resolve、Trigger Action)、超时、升级策略 |
| Schedule | 管理值班人员的 时间轮换,决定在特定时间点哪个用户或团队是“当前责任人”。 | “值班表” | 轮换类型(单日、多日、自定义)、覆盖(Override)、层级(Layer) |
架构要点: Integration 负责“入”,Escalation Chain 负责“流”,Schedule 负责“人”。降噪规则主要作用于 Integration 和 Escalation Chain 之间,控制哪些 Alert 能进入编排流程。
2.2 告警生命周期与数据流
一个告警从外部系统触发到最终关闭,在 OnCall 内部经历以下阶段。理解这个生命周期是配置降噪规则的前提。
- Ingestion(接收):外部系统通过 Webhook 发送告警到 Integration 的端点。
- Normalization(标准化):Integration 根据模板将原始 Payload 解析为 OnCall 的
Alert对象,包含标题、描述、严重级别、标签等。 - Grouping(分组):根据 分组规则(基于标签或内容指纹)将相似的 Alert 合并为
Alert Group。这是降噪的第一道关卡。 - Routing(路由):Alert Group 根据 Integration 的 路由规则 被分配到指定的 Escalation Chain。
- Escalation(编排):Escalation Chain 按步骤执行:查找当前 Schedule 确定责任人 → 发送通知(电话、短信、Slack、邮件)→ 等待确认 → 超时后升级到下一级。
- Resolution(关闭):责任人确认(Acknowledge)或外部系统发送恢复告警后,Alert Group 被关闭。
2.3 核心组件交互关系
Integration、Escalation Chain、Schedule 三者并非孤立运行,而是通过以下方式协同工作:
- Integration → Escalation Chain:每个 Integration 必须绑定一个默认的 Escalation Chain。路由规则可以覆盖此默认绑定,实现“不同标签走不同流程”。
- Escalation Chain → Schedule:Escalation Chain 中的
Notify步骤会引用一个 Schedule,从而确定当前应该通知谁。如果没有 Schedule,则通知固定用户或团队。 - Schedule → User:Schedule 的轮换层最终指向具体的 OnCall 用户(User),用户配置了个人通知方式(电话、短信、Slack 等)。
2.4 告警降噪在架构中的位置
从架构视角看,告警降噪并非一个独立模块,而是贯穿 分组(Grouping) 和 路由(Routing) 两个阶段的策略组合:
| 降噪策略 | 作用阶段 | 实现方式 | 典型场景 |
|---|---|---|---|
| 分组降噪 | Grouping | 基于标签模板(如 alertname、instance)自动合并相同指纹的告警。 |
Prometheus 中同一台机器的 CPU 持续抖动,只产生一个 Alert Group。 |
| 路由降噪 | Routing | 根据告警标签(如 severity=info)将低优先级告警路由到“仅记录”的 Escalation Chain,不触发通知。 |
开发环境的磁盘告警只写入日志,不呼叫值班人。 |
| 抑制降噪 | Escalation | 在 Escalation Chain 中配置 Wait 步骤,等待一段时间后检查是否已恢复,避免短时抖动触发通知。 |
网络闪断 30 秒内恢复,不产生告警通知。 |
工程落地提示: 在部署 OnCall 初期,建议先配置 分组降噪 和 路由降噪,它们对告警量的削减效果最明显(通常可减少 60%-80% 的 Alert Group 数量)。抑制降噪需要结合业务抖动窗口谨慎配置,避免漏过真实故障。