文件
hyb-oa/docs/ops/SLO错误预算.md

3.9 KiB

SLI / SLO 与错误预算(P13)

更新时间:2026-02-12

1. 范围与目标

本版聚焦 P11/P13 治理链路(Feature Flags、ERP 同步、验真开关)和核心可观测接口,建立可执行的 SLI/SLO 与错误预算基线。

  • 环境范围:生产环境(NODE_ENV=production)
  • 统计窗口:滚动 30 天
  • 目标用途:发布评审、变更放行、故障复盘

2. SLI 定义

SLI-1:API 可用性(Availability)

  • 指标定义:
    • 分子:http_server_requests_total{status!~"5.."}
    • 分母:http_server_requests_total
  • 统计口径:按所有 /api/* 请求聚合
  • 采样周期:5 分钟

SLI-2:核心接口延迟(Latency P99)

  • 指标定义:histogram_quantile(0.99, rate(http_server_request_duration_seconds_bucket[5m]))
  • 核心接口:
    • /api/dashboard/expense-overview
    • /api/dashboard/trends
    • /api/dashboard/top-categories
    • /api/dashboard/approval-efficiency

SLI-3:治理开关变更成功率(Feature Flag Update Success)

  • 指标定义:
    • 分子:/api/system/feature-flags/:key 返回 2xx 的次数
    • 分母:/api/system/feature-flags/:key 总调用次数
  • 目标:验证治理入口稳定性,避免灰度期管理面不稳定

SLI-4:关键业务流门禁成功率(QAOPS8)

  • 指标定义:
    • 分子:run-business-flow-gates.sh 中通过的核心业务域数量。
    • 分母:本次门禁要求执行的核心业务域数量。
  • 当前核心业务域:reimbursement、approval、leave、procurement、governance。
  • 统计口径:以 artifacts/qa-flow/business-flow-<timestamp>/summary.txt 的逐组 PASS / FAIL 为准。
  • 目标用途:R7E Go/No-Go、发布候选评审和回归失败定位。

3. SLO 目标

SLO-A(可用性)

  • 目标:30 天可用性 >= 99.90%
  • 对应最大不可用预算:0.10%
  • 换算:
    • 每 30 天预算约 43 分钟
    • 每 7 天预算约 10 分钟

SLO-B(延迟)

  • 目标:核心 Dashboard 接口 P99 < 500ms
  • 兜底上限:P99 不得持续超过 1500ms 超过 15 分钟

SLO-C(治理变更稳定性)

  • 目标:Feature Flag 更新成功率 >= 99.5%
  • 说明:若低于目标,暂停高风险灰度变更(ERP/验真)

SLO-D(关键业务流门禁)

  • 目标:进入 R7E Go/No-Go 或发布候选前,要求范围内核心业务流门禁阻断失败数为 0。
  • 说明:该项是上线门禁口径,不替代正式线上可用性 SLA;若任一核心业务域失败,结论应为 Pause 或 No-Go。

4. 错误预算策略

预算分级

  • 正常区:剩余预算 > 50%
    • 允许常规迭代与灰度
  • 预警区:剩余预算 20% ~ 50%
    • 限制非必要发布频率,增加回归样本
  • 保护区:剩余预算 < 20%
    • 冻结非紧急变更,仅允许故障修复

预算消耗触发动作

  • 可用性预算触发:
    1. 立即复核最近 24h 发布与配置变更
    2. 执行 erp_sync 与 invoice_verification 的 force_off 预案
  • 延迟预算触发:
    1. 优先检查 Dashboard 聚合查询与数据库负载
    2. 降级非关键统计刷新频率

5. 监控与告警接入

  • Prometheus 告警规则:deploy/prometheus/alerts-slo.yml
  • 非功能脚本:
    • server/scripts/benchmark-dashboard.sh
    • server/scripts/security-baseline.sh
  • 发布前最小检查:
    • ./scripts/check-minimal.sh
    • cd server && ./scripts/regression-feature-flags.sh

6. 回滚与变更约束

  • 一级回滚(业务可用优先):
    • 将 erp_sync、invoice_verification 置 force_off
  • 二级回滚(系统保护):
    • env 硬闸:ERP_SYNC_ENABLED=false、INVOICE_VERIFICATION_ENABLED=false
  • 说明:保留审计与历史开关记录,不做 destructive 数据回滚

7. 后续演进(P13-5+)

  • 将 regression-all.sh 结构化结果纳入 SLO 评审输入
  • 形成 Change Failure Rate 周报/月报(DORA 指标)
  • 将 SLO 预算状态纳入发布门禁