# 可观测性 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 → 确认自动恢复;如部署告警工具,则同时验证告警通道可送达负责人。