feat: 建立可观测性、容量与恢复验证基线
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# 备份恢复演练
|
||||
|
||||
## 目标
|
||||
|
||||
验证 PostgreSQL、IoTDB、Ceph/S3 和业务配置的可恢复性,记录 RPO/RTO。
|
||||
|
||||
## 演练前
|
||||
|
||||
1. 记录当前版本、commit、schema 版本和服务清单。
|
||||
2. 使用 `pg_dump` 备份 PostgreSQL 到隔离命名空间。
|
||||
3. 备份 IoTDB 数据目录或按现有运维流程导出。
|
||||
4. 记录 Ceph/S3 bucket 清单和对象数量。
|
||||
|
||||
## 恢复步骤
|
||||
|
||||
1. 在隔离环境创建空 PostgreSQL 数据库。
|
||||
2. 执行 `pg_restore` 恢复备份。
|
||||
3. 恢复 IoTDB 数据并启动服务。
|
||||
4. 校验图片、光谱、录像对象引用与数据库记录一致。
|
||||
5. 启动 Go/AI/Web 服务并执行核心接口冒烟。
|
||||
|
||||
## 记录项
|
||||
|
||||
- 备份开始/结束时间
|
||||
- 备份体积
|
||||
- 恢复开始/结束时间
|
||||
- RPO(最近可用备份到故障时间)
|
||||
- RTO(故障到服务可用)
|
||||
- 数据点核对:巡检、遥测、检测、通知、任务、会诊、溯源
|
||||
- 失败项与原因
|
||||
|
||||
## 验收
|
||||
|
||||
- 核心业务记录无缺失。
|
||||
- 图片/光谱/录像对象引用可访问。
|
||||
- 至少完成一次真实恢复演练后才允许执行正式生产迁移。
|
||||
@@ -0,0 +1,39 @@
|
||||
# 负载测试场景
|
||||
|
||||
目标环境:Go 后端 + PostgreSQL + Redis + IoTDB + AI 服务。结果需记录测试日期、版本、机器配置、并发、时长、p50/p95、失败率和观察到的限制。
|
||||
|
||||
## A. 500 在线用户 API 混合负载
|
||||
|
||||
比例:
|
||||
|
||||
- 80% 查询类:房间、设备、遥测最新值、告警列表
|
||||
- 10% 遥测趋势:历史/聚合查询
|
||||
- 5% 上传类:图片巡检上传
|
||||
- 5% 管理操作:阈值、批次、检测任务、会诊
|
||||
|
||||
验收:API 错误率 <1%,业务接口 p95 <1s;上传成功且巡检闭环可追踪。
|
||||
|
||||
## B. 1000 WebSocket 连接
|
||||
|
||||
- 1000 个连接按授权设备订阅
|
||||
- 持续 30 分钟
|
||||
- 记录连接成功率、掉线率、消息延迟、CPU/内存
|
||||
|
||||
验收:连接成功率 >99%,消息 P95 延迟 <500ms,无内存持续增长。
|
||||
|
||||
## C. AI 峰值
|
||||
|
||||
固定条件:
|
||||
|
||||
- GPU:目标 T4 16G
|
||||
- 模型版本和 ONNX 文件 hash
|
||||
- 输入尺寸
|
||||
- 并发数(建议 1/4/8/16)
|
||||
|
||||
记录 p50/p95、失败率、GPU 显存和单帧延迟。结果用于设置生产并发上限和推理告警阈值。
|
||||
|
||||
## 禁止事项
|
||||
|
||||
- 不在生产库执行写入类负载。
|
||||
- 不使用真实用户隐私图片做公开压测。
|
||||
- 压测前必须备份数据库并记录环境状态。
|
||||
@@ -0,0 +1,39 @@
|
||||
# 可观测性 SLO 与告警阈值
|
||||
|
||||
## 日志与请求 ID
|
||||
|
||||
- Go 后端每个 HTTP 请求生成或透传 `X-Request-ID`,日志统一记录 `requestId/method/path/query/status/latency/ip/authType`。
|
||||
- 日志不记录 Authorization 原始值;query 中 `token/password/secret/authorization` 类参数统一替换为 `[redacted]`。
|
||||
- AI 服务 `/detect` 同样透传 `X-Request-ID`,便于跨 Go/Python 全链路追踪。
|
||||
|
||||
## 依赖指标
|
||||
|
||||
`GET /api/v1/ops/metrics`(`log:read`)返回依赖指标,至少记录请求数、失败数、最近延迟、P50/P95、最近成功/失败时间和最近错误。目标覆盖:
|
||||
|
||||
- PostgreSQL
|
||||
- Redis
|
||||
- MQTT
|
||||
- IoTDB
|
||||
- S3
|
||||
- AI 服务
|
||||
- WVP/ZLM
|
||||
- 微信
|
||||
- 天气
|
||||
|
||||
## 初始告警阈值
|
||||
|
||||
| 指标 | 目标 | 告警阈值 | 负责人 |
|
||||
|---|---|---|---|
|
||||
| API 可用性 | 99.5% | 5 分钟错误率 >5% | 后端 + 运维 |
|
||||
| API p95 延迟 | <500ms(业务接口) | 5 分钟 p95 >1s | 后端 |
|
||||
| 登录失败率 | 正常用户 <2% | 5 分钟失败率 >10% | 后端 + 安全 |
|
||||
| Redis | 可用 | Ping 失败 3 次 | 运维 |
|
||||
| PostgreSQL | 可用 | 连接/查询失败 3 次 | 后端 + 运维 |
|
||||
| IoTDB | 可用或明确降级 | 持续不可用且遥测回退 | 后端 |
|
||||
| AI 推理失败率 | <1% | 5 分钟失败率 >5% | AI + 后端 |
|
||||
| Ceph 容量 | 使用率 <80% | 使用率 >80% | 运维 |
|
||||
| Outbox 积压 | 常态 <50 | pending+retry >200 | 后端 |
|
||||
|
||||
## 模拟故障验证
|
||||
|
||||
每次发布前至少验证一次通知链:断开 Redis → 确认认证接口返回 503 → 恢复 Redis → 确认自动恢复;如部署告警工具,则同时验证告警通道可送达负责人。
|
||||
Reference in New Issue
Block a user