Files
lijiaoqiao/supply-api/docs/alert_escalation_v1.md
Your Name aecba5ff27 docs(review): add remediation plans and readiness artifacts
Add design, review, and production-readiness documents for the April remediation cycle.\nInclude supporting SQL and supply-api operational design notes so review conclusions and implementation guidance stay versioned together.
2026-04-13 18:54:45 +08:00

314 lines
10 KiB
Markdown

# 告警升级策略 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): 初始版本