feat: close v3 slo gates and lifecycle metrics
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# SLO and Observability
|
||||
|
||||
日期:2026-06-04
|
||||
状态:待审核
|
||||
状态:已落地(V3-2)
|
||||
适用版本:vNext.3
|
||||
|
||||
## 目的
|
||||
@@ -107,3 +107,50 @@ vNext.3 引入正式发布门禁前,至少要求:
|
||||
|
||||
本文件属于 vNext.3 设计文档。
|
||||
当前 vNext.1 不进入实现,但必须在规划阶段明确其后续必备性,避免将来“功能可用但不可运营”。
|
||||
|
||||
## 2026-06-08 当前落地口径
|
||||
|
||||
### 已落地指标
|
||||
|
||||
- `http_requests_total{method,path,status}`
|
||||
- `status` 使用数值字符串(如 `200/403/500`)
|
||||
- `path` 优先使用 `r.Pattern`,避免动态 path 高基数
|
||||
- `http_request_duration_seconds{method,path}`
|
||||
- `route_decisions_total{logical_group,status}`
|
||||
- `status in (sticky_hit, bind, fallback, failover)`
|
||||
- `route_failovers_total`
|
||||
- `user_key_operations_total{operation,result}`
|
||||
- `operation in (create, reset, pause, resume, delete)`
|
||||
- `result` 已覆盖 `success / unauthorized / bad_request / rate_limited / open_store_error / get_key_error / not_found / rate_limit_store_error / resolve_host_error / resolve_shadow_group_error / ensure_access_error / pause_access_error / resume_access_error / db_tx_error`
|
||||
- `user_key_chat_requests_total{result}`
|
||||
- `result in (ok, unauthorized, invalid_api_key, key_paused, key_retired, quota_exhausted, bad_request, db_error, proxy_error)`
|
||||
|
||||
### 已落地告警规则
|
||||
|
||||
文件:`deploy/monitoring/prometheus-rules.yml`
|
||||
|
||||
- `HighErrorRate`
|
||||
- `UserKeyChatSuccessRateLow`
|
||||
- `UserKeyChatP95LatencyHigh`
|
||||
- `UserKeyCreateFailures`
|
||||
- `UserKeyResetFailures`
|
||||
- `UserKeyQuotaExhaustedSpike`
|
||||
- `UserKeyAuthFailuresSpike`
|
||||
- `RouteFailoverShareHigh`
|
||||
- `NoActiveProviders`
|
||||
- `NoActiveHosts`
|
||||
- `LogFlushErrors`
|
||||
- `LogDroppedEvents`
|
||||
- `HealthCheckFailing`
|
||||
|
||||
### 已落地发布门禁
|
||||
|
||||
脚本:`scripts/test/verify_vnext_slo_release_gate.sh`
|
||||
|
||||
门禁要求:
|
||||
|
||||
1. 核心 source-of-truth 文档存在
|
||||
2. metrics 接线与代码口径一致
|
||||
3. Prometheus 规则引用真实存在的指标与标签
|
||||
4. live governance artifact 满足 create `201` → chat `200` → pause `200` → chat-paused `403 key_paused` → resume `200` → chat `200` → delete `200`
|
||||
5. `docs/EXECUTION_BOARD.md` 已同步 V3-2 完成态
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
## 一、先说结论
|
||||
|
||||
当前状态:条件完成(全量 vNext)
|
||||
当前状态:完成(全量 vNext)
|
||||
|
||||
说明:
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
- vNext.2 已完成 V2-4 + V2-5:key self-service API、portal key 管理 UI、用户 portal reset 后首次调用 200 真实线上闭环。
|
||||
- vNext.3 已完成 V3-1:key/account governance 的公网 create→chat→pause→chat-paused→resume→chat-resumed 真验闭环。
|
||||
- vNext.3 / V3-2 已启动首批 SLO/观测最小闭环:HTTP metrics route pattern 归一化、route resolve/failover 指标接线、user-key lifecycle/chat outcome 指标接线与回归测试已完成。
|
||||
- 仍未完成的是更宽泛的后续治理/SLO 扩展范围;因此按“当前 CRM 网关路线”口径已完成,按“全量 vNext 后续扩展全部做完”口径仍是条件完成。
|
||||
- V3-2 的失败路径指标细化、Prometheus 告警规则、V3-2 release gate 已全部补齐;当前 CRM 网关路线与全量 vNext 后续扩展口径现已统一为完成。
|
||||
|
||||
## 二、5 个核心问题 Checklist(全量 vNext 目标)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
| 2. 同模型多供应商池化 | 模型池抽象 + 映射 + 真实池化验收 | vNext.1 已闭环 | `model_pool.go`、pool 测试、真实验收脚本已存在 |
|
||||
| 3. 插件前端承接用户弱能力 | Portal 能承接用户信息、模型、示例、key 信息 | V2-5 已完成 | `PORTAL_KEY_EXPERIENCE.md`、`deploy/tksea-portal/index.html`、`artifacts/portal-ui-v25/20260606_1009/99-summary.json` |
|
||||
| 4. 插件生成/申请 key 并交付 base URL/model/curl 示例 | key self-service API + 首次调用 200 闭环 | V2-4/V2-5 已完成 | `KEY_SELF_SERVICE_API.md`、`verify_user_key_self_service.sh`、`artifacts/user-key-self-service/20260605_195408/99-summary.json`、`artifacts/portal-ui-v25/20260606_1009/99-summary.json` |
|
||||
| 5. key / 账号暂停、恢复、限额治理 | 三态模型 + 管理页动作 + 真实治理验收 | V3-1 已闭环 / V3-2 进行中 | `KEY_ACCOUNT_GOVERNANCE.md`、`artifacts/v3-governance-live/20260608_102323/99-summary.json`、`internal/metrics/metrics.go`、`internal/app/public_chat_metrics_test.go` |
|
||||
| 5. key / 账号暂停、恢复、限额治理 | 三态模型 + 管理页动作 + 真实治理验收 | V3-1/V3-2 已闭环 | `KEY_ACCOUNT_GOVERNANCE.md`、`artifacts/v3-governance-live/20260608_102323/99-summary.json`、`internal/metrics/metrics.go`、`internal/app/public_chat_metrics_test.go`、`scripts/test/verify_vnext_slo_release_gate.sh` |
|
||||
|
||||
## 三、vNext.1 发布范围 Checklist
|
||||
|
||||
@@ -96,19 +96,22 @@
|
||||
- Task 4.1 状态模型与治理语义:已实现并接线到 CRM 网关 `POST /v1/chat/completions`
|
||||
- Task 4.2 管理页治理动作:已实现(pause / resume 同步宿主 managed user `allowed_groups`)
|
||||
- Task 4.3 真实治理验收:已完成,见 `artifacts/v3-governance-live/20260608_102323/99-summary.json`
|
||||
- Task 4.4 SLO / 观测最小闭环(第一批):已完成首批接线
|
||||
- `internal/metrics/metrics.go` 新增 `user_key_operations_total`、`user_key_chat_requests_total`
|
||||
- Task 4.4 SLO / 观测闭环:已完成
|
||||
- `internal/metrics/metrics.go` 新增 `user_key_operations_total`、`user_key_chat_requests_total`,并把 HTTP status label 收口为数值字符串
|
||||
- `http_requests_total` 优先使用 `r.Pattern`,避免动态 path 高基数
|
||||
- route resolve / failover、user-key self-service、public chat outcome 已接指标并补回归测试
|
||||
- user-key lifecycle 失败路径指标已补齐到 create/reset/pause/resume/delete
|
||||
- `deploy/monitoring/prometheus-rules.yml` 已按当前指标口径重写
|
||||
- `scripts/test/verify_vnext_slo_release_gate.sh` 已落地并纳入总质量门
|
||||
|
||||
状态:V3-1 已闭环;V3-2 首批 SLO/观测接线已完成,剩余治理/SLO 扩展项继续推进
|
||||
状态:V3-1 / V3-2 已闭环
|
||||
|
||||
### Phase 5
|
||||
|
||||
- Task 5.1 默认链路准入规则:vNext.1 已闭环
|
||||
- Task 5.2 多层验证:vNext.1 + V2-4 当前均已有真实 artifact
|
||||
|
||||
状态:部分完成(整体 vNext 仍未完成)
|
||||
状态:完成(全量 vNext 已完成)
|
||||
|
||||
## 五、当前缺失文件 / 脚本 / 测试(按真实存在性校对)
|
||||
|
||||
@@ -120,6 +123,9 @@
|
||||
- `scripts/acceptance/verify_host_protocol_matrix.sh` — 已存在
|
||||
- `scripts/acceptance/verify_user_key_self_service.sh` — 已从 skeleton 升级为真实验收脚本
|
||||
- `internal/app/key_self_service_test.go` — 已存在
|
||||
- `internal/app/user_key_operation_metrics_test.go` — 已存在
|
||||
- `scripts/test/verify_vnext_slo_release_gate.sh` — 已存在
|
||||
- `deploy/monitoring/prometheus-rules.yml` — 已按 V3-2 指标口径重写
|
||||
|
||||
### vNext.2 尚缺
|
||||
|
||||
@@ -145,16 +151,15 @@
|
||||
|
||||
### 立即执行:收尾与同步
|
||||
|
||||
1. 已完成 V3-1 公网真验闭环:create 201 → chat 200 → pause 200 → chat-paused 403 → resume 200 → chat 200
|
||||
2. 已确认 2026-06-06 的“pause 后仍 200”并非宿主 cache TTL,而是公网 `/v1/chat/completions` 当时仍走宿主、且 CRM `hosts.auth_token` 已过期
|
||||
3. 已补 remote43 nginx 精确路由与 host bearer 刷新;仓库同步更新部署脚本/示例 nginx
|
||||
4. 下一步仅剩文档、commit、push 与后续 SLO 范围推进
|
||||
1. 运行完整质量门并确认 worktree clean
|
||||
2. commit + push 本轮 V3-2 收尾变更
|
||||
3. 更新任务真相源为 completed
|
||||
|
||||
## 八、当前判定(唯一有效口径)
|
||||
|
||||
- 按 vNext.1 发布范围:**完成**
|
||||
- 按 vNext.2 当前执行项:**完成**(V2-4 + V2-5 已真实闭环)
|
||||
- 按全量 vNext 规划:**条件完成**(V3-1 核心代码+测试+线上真验已闭环;剩余仅是后续治理/SLO 扩展项,不再阻塞当前 CRM 网关路线)
|
||||
- 按全量 vNext 规划:**完成**(V2-4 / V2-5 / V3-1 / V3-2 均已完成代码、门禁、文档与真实证据闭环)
|
||||
- 当前结论:
|
||||
- V2-4 / V2-5 / V3-1 已真实闭环,可提交/推送
|
||||
- 若要宣告“全量 vNext 所有后续扩展都完成”,还需单独定义并交付 V3-2/SLO 范围
|
||||
- 全量 vNext 后续扩展已完成
|
||||
- 当前仅剩本轮变更的 commit / push 收尾动作
|
||||
|
||||
@@ -129,18 +129,20 @@
|
||||
|
||||
- 目标:先把现有 CRM 网关与 user-key 自助链路接成可观测真相源,而不是停留在“有 /metrics 端点但关键路径不产生日志/指标”。
|
||||
- 本轮代码接线:
|
||||
- `internal/metrics/metrics.go`:新增 `user_key_operations_total`、`user_key_chat_requests_total`;HTTP metrics 优先使用 `r.Pattern`,避免动态 path 高基数
|
||||
- `internal/app/route_resolve_api.go`:resolve / failover 接入 route metrics
|
||||
- `internal/app/key_self_service_svc.go`:create/reset/pause/resume/delete success metrics 接线
|
||||
- `internal/metrics/metrics.go`:`user_key_operations_total`、`user_key_chat_requests_total` 已接线;HTTP status label 改为数值字符串,HTTP path 优先使用 `r.Pattern`,避免动态 path 高基数
|
||||
- `internal/app/route_resolve_api.go`:route decision 语义收口为 `sticky_hit / bind / fallback / failover`,failover 不再和 fallback 混成单一状态
|
||||
- `internal/app/key_self_service_svc.go`:create/reset/pause/resume/delete 不只记录 success,还补齐 `open_store_error / get_key_error / not_found / rate_limit_store_error / resolve_host_error / resolve_shadow_group_error / ensure_access_error / pause_access_error / resume_access_error / db_tx_error` 等失败路径指标
|
||||
- `internal/app/http_api.go`:`/v1/chat/completions` 接入 `unauthorized / invalid_api_key / key_paused / key_retired / quota_exhausted / bad_request / db_error / proxy_error / ok` outcome metrics
|
||||
- `internal/app/public_chat_metrics_test.go`:新增 quota_exhausted 与 route pattern 回归测试
|
||||
- `deploy/monitoring/prometheus-rules.yml`:已按当前真实指标口径重写为 `UserKeyChatSuccessRateLow / UserKeyChatP95LatencyHigh / UserKeyCreateFailures / UserKeyResetFailures / UserKeyQuotaExhaustedSpike / UserKeyAuthFailuresSpike / RouteFailoverShareHigh` 等告警规则
|
||||
- `scripts/test/verify_vnext_slo_release_gate.sh`:新增 V3-2 发布门禁脚本,并已接入 `scripts/test/verify_quality_gates.sh`
|
||||
- 本轮门禁:
|
||||
- `go test ./internal/app ./internal/metrics -count=1` → PASS
|
||||
- `go test ./tests/integration/... -count=1` → PASS
|
||||
- `go vet ./...` → PASS
|
||||
- `go test -cover ./internal/...` → PASS(核心包 `access/provision/pack` 均 ≥ 70%)
|
||||
- `bash ./scripts/test/verify_vnext_slo_release_gate.sh` → PASS(校验 metrics 接线 / 告警规则 / live governance artifact / 文档口径)
|
||||
- 当前结论:
|
||||
- `部分闭环` —— 首批 SLO/观测接线已完成并过门禁;更宽泛的治理/SLO 扩展(失败路径细化、告警/发布门禁)继续推进
|
||||
- `已闭环` —— V3-2 的失败路径细化、告警规则、发布门禁均已落地;全量 vNext 后续扩展已收口到可验证完成态
|
||||
|
||||
- portal key 管理 UI 已完成实现、部署和真实公网验收:
|
||||
- 关键代码:
|
||||
|
||||
Reference in New Issue
Block a user