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.
314 lines
10 KiB
Markdown
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): 初始版本
|