# 告警升级策略 v1.0 > **文档版本**: v1.0 > **创建日期**: 2026-04-07 > **问题**: P1-011 PRD要求"预算、错误率、异常波动告警",但未定义告警升级路径和静默策略 --- ## 1. 告警级别定义 ### 1.1 告警级别矩阵 | 级别 | 名称 | 响应时间 | 说明 | 通知方式 | |------|------|----------|------|----------| | P1 | **紧急** | 5分钟内 | 系统不可用、数据丢失风险 | 电话+短信+IM | | P2 | **严重** | 15分钟内 | 核心功能受损、性能严重下降 | 短信+IM | | P3 | **警告** | 1小时内 | 非核心功能异常、指标超阈值 | IM+邮件 | | P4 | **提示** | 工作时间 | 需要关注但不影响业务 | 邮件 | ### 1.2 告警状态定义 | 状态 | 说明 | |------|------| | Firing | 告警触发中 | | Acknowledged | 已确认,正在处理 | | Resolved | 已解决 | | Silenced | 已静默 | --- ## 2. 告警升级规则 ### 2.1 自动升级规则 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 告警升级流程 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ P3 警告 ──── 30分钟未响应 ────► P2 严重 ──── 15分钟未响应 ────► P1 紧急 │ │ │ │ │ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ 值班工程师 值班TL 值班VP/CTO │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### 2.2 升级触发条件 | 升级路径 | 触发条件 | 升级后级别 | |----------|----------|------------| | P3 → P2 | 30分钟内未确认 | P2 | | P3 → P2 | 影响核心功能 | P2 | | P2 → P1 | 15分钟内未解决 | P1 | | P2 → P1 | 系统不可用 | P1 | | P4 → P3 | 指标持续恶化 | P3 | ### 2.3 升级通知模板 **P1 紧急升级通知**: ``` 【紧急告警升级】 系统: Supply API 告警: {alert_name} 级别: P1 紧急 时间: {start_time} 持续: {duration} 影响: {impact} 当前状态: {status} 处理人: {assignee} 请立即处理! ``` --- ## 3. 告警类型定义 ### 3.1 系统层告警 | 告警名称 | 级别 | 条件 | 阈值 | 严重程度 | |----------|------|------|------|----------| | CPU使用率过高 | P2 | 5分钟平均值 | > 80% | 严重 | | CPU使用率危急 | P1 | 5分钟平均值 | > 95% | 紧急 | | 内存使用率过高 | P2 | 5分钟平均值 | > 85% | 严重 | | 内存使用率危急 | P1 | 5分钟平均值 | > 95% | 紧急 | | 磁盘空间不足 | P1 | 剩余空间 | < 10GB | 紧急 | | 数据库连接池耗尽 | P1 | 可用连接 | = 0 | 紧急 | | Redis连接异常 | P2 | 连接状态 | = 失败 | 严重 | ### 3.2 应用层告警 | 告警名称 | 级别 | 条件 | 阈值 | 严重程度 | |----------|------|------|------|----------| | 服务不可用 | P1 | HTTP状态码 | 5xx > 50% | 紧急 | | API错误率过高 | P2 | 5分钟错误率 | > 5% | 严重 | | API延迟过高 | P2 | P95延迟 | > 2s | 严重 | | API延迟危急 | P1 | P99延迟 | > 5s | 紧急 | | 认证失败率过高 | P3 | 5分钟失败率 | > 20% | 警告 | | Token吊销延迟 | P2 | 吊销到生效 | > 10s | 严重 | ### 3.3 业务层告警 | 告警名称 | 级别 | 条件 | 阈值 | 严重程度 | |----------|------|------|------|----------| | 预算使用率超限 | P2 | 账户预算 | > 90% | 严重 | | 预算已用尽 | P1 | 账户预算 | = 100% | 紧急 | | 结算失败率过高 | P2 | 5分钟失败率 | > 10% | 严重 | | 账户风险评分高 | P3 | 风险评分 | > 80 | 警告 | | 提现处理延迟 | P2 | 处理队列 | > 100笔 | 严重 | | 订单支付超时 | P3 | 超时订单 | > 50笔 | 警告 | ### 3.4 安全层告警 | 告警名称 | 级别 | 条件 | 阈值 | 严重程度 | |----------|------|------|------|----------| | 频繁认证失败 | P2 | 15分钟失败数 | > 50次 | 严重 | | 异常IP访问 | P2 | 异常IP数 | > 20个 | 严重 | | 权限检查失败 | P3 | 失败次数 | > 100次 | 警告 | | 可疑QueryKey | P2 | 检测到可疑参数 | > 0 | 严重 | | KMS连接异常 | P1 | 连接状态 | = 失败 | 紧急 | --- ## 4. 静默策略 ### 4.1 静默规则定义 静默规则用于在特定时间段内抑制告警,避免不必要的打扰。 | 静默类型 | 适用场景 | 静默时长 | 审批要求 | |----------|----------|----------|----------| | 计划内维护 | 系统升级、数据迁移 | 自定义 | TL审批 | | 误报静默 | 已知误报源 | ≤ 24h | 值班工程师 | | 事件静默 | 大促、重大活动 | 自定义 | VP审批 | ### 4.2 静默规则示例 ```yaml # 静默规则配置 silence_rules: - name: "计划内数据库维护" id: "silence-20260407-001" start_time: "2026-04-07T02:00:00Z" end_time: "2026-04-07T04:00:00Z" matchers: - name: "alertname" value: "DatabaseConnectionError" - name: "instance" value: "primary-db.*" reason: "数据库版本升级维护" created_by: "ops-lead@company.com" approved_by: "cto@company.com" - name: "已知误报" id: "silence-20260407-002" start_time: "2026-04-07T10:00:00Z" end_time: "2026-04-08T10:00:00Z" matchers: - name: "alertname" value: "APILatencyWarning" - name: "path" value: "/health" reason: "健康检查端点已知延迟,误报" created_by: "sre@company.com" ``` ### 4.3 静默约束 1. **最大静默时长**: 单次静默不超过 7 天 2. **提前申请**: 计划内静默需提前 24 小时申请 3. **最小静默范围**: 必须指定具体告警或服务 4. **审计日志**: 所有静默操作必须记录 --- ## 5. 通知渠道配置 ### 5.1 通知渠道定义 | 渠道 | 用途 | 响应速度 | 配置要求 | |------|------|----------|----------| | 电话 | P1紧急告警 | 即时 | 必须配置 | | 短信 | P1/P2告警 | < 1分钟 | 必须配置 | | 企业微信 | P2/P3告警 | < 5分钟 | 必须配置 | | 邮件 | P3/P4告警 | < 15分钟 | 必须配置 | | 钉钉 | 备用渠道 | < 5分钟 | 推荐配置 | ### 5.2 通知接收人配置 ```yaml notification_channels: on_call: primary: name: "值班工程师" phone: "+86-138-xxxx-xxxx" schedule: "weekly_rotation" backup: name: "值班TL" phone: "+86-139-xxxx-xxxx" escalation_wait: 15m emergency: name: "CTO" phone: "+86-136-xxxx-xxxx" escalation_wait: 30m security_team: name: "安全团队" email: "security@company.com" for_alerts: - "可疑QueryKey" - "异常IP访问" - "频繁认证失败" ``` --- ## 6. 告警处理流程 ### 6.1 处理流程 ``` 告警触发 │ ▼ ┌─────────────────┐ │ P1/P2: 电话通知 │──► 值班工程师响应 │ P3: IM通知 │ │ └─────────────────┘ │ ▼ ┌───────────────┐ │ 确认告警 │──否──► 等待响应 │ (15min内) │ (自动升级) └───────────────┘ │是 ▼ ┌───────────────┐ │ 定位问题 │ │ (30min内) │ └───────────────┘ │ ▼ ┌───────────────┐ │ 解决问题 │ │ (按SLO) │ └───────────────┘ │ ▼ ┌───────────────┐ │ 验证恢复 │ │ 关闭告警 │ └───────────────┘ ``` ### 6.2 告警响应时间目标 | 级别 | 确认时间 | 定位时间 | 恢复时间 | SLO | |------|----------|----------|----------|-----| | P1 | 5分钟 | 15分钟 | 1小时 | 99.9% | | P2 | 15分钟 | 30分钟 | 4小时 | 99.5% | | P3 | 1小时 | 2小时 | 24小时 | 99% | | P4 | 工作时间 | - | 72小时 | 95% | --- ## 7. 告警管理后台 ### 7.1 功能需求 | 功能 | 说明 | |------|------| | 告警列表 | 显示所有告警,支持过滤和搜索 | | 告警详情 | 显示告警完整信息、波形图、处理历史 | | 告警确认 | 确认告警并填写处理说明 | | 告警静默 | 创建、编辑、删除静默规则 | | 告警升级 | 手动升级告警级别 | | 告警统计 | 显示告警趋势、MTBF、MTTR | ### 7.2 推荐工具 | 工具 | 类型 | 适用规模 | |------|------|----------| | Prometheus Alertmanager | 开源 | 中小型 | | Grafana Alerting | 开源 | 中小型 | | PagerDuty | 商业SAAS | 中大型 | | Opsgenie | 商业SAAS | 中大型 | | 飞书告警 | 商业SAAS | 国内企业 | --- ## 8. SLO 与告警关联 ### 8.1 SLO 定义 | 服务 | SLO | 错误预算 | |------|-----|----------| | API可用性 | 99.9% | 43.8分钟/月 | | API延迟 P95 | 99% < 500ms | 7.3小时/月 | | 认证成功率 | 99.5% | 3.6小时/月 | | 结算处理 | 99% | 7.3小时/月 | ### 8.2 基于错误预算的告警 当错误预算消耗超过阈值时触发警告: - **消耗 > 50%**: P3 警告 - **消耗 > 75%**: P2 严重 - **消耗 > 100%**: P1 紧急 --- > **维护记录**: > - v1.0 (2026-04-07): 初始版本