运维
运维手册
OpsKeeper 的 day-2 操作。完整文档在仓库的 docs/operations-manual.md;本页是执行摘要。
备份
备份两样东西:PostgreSQL(账本与事件记忆是权威源)和 Qdrant snapshot(向量记忆)。 没有独立的导出流水线 —— 数据库就是事实源。
backup
# 1. PostgreSQL 逻辑备份
pg_dump --schema=public --file=opskeeper-$(date +%F).sql "$POSTGRES_DSN"
# 2. Qdrant snapshot
curl -X POST "$QDRANT_URL/snapshots" -H 'content-type: application/json' \
-d '{"collection_name":"opskeeper_incidents"}'密钥轮换
- 插件 HMAC 密钥:在密钥管理器里 staging 一个新密钥,然后滚动重启 Worker。MCP 代理在启动时从环境变量读取
OPSKEEPER_GATEWAY_KEY。 - JWT 签名密钥:通过 API 轮换,旧 token 在下次 refresh 时过期。
- Edge 密钥:
RotateSecret会为 edge 重新生成密钥并替换存储的哈希。
扩缩容
控制平面无状态,在 TCP 负载均衡器后水平扩。编排器通过 MySQL GET_LOCK 做 per-incident 串行化,争用上限是活跃事件数,不是控制平面规模。
监控
Grafana 仪表盘自动预置。控制平面实际暴露的关键指标:
loop_phase_total/loop_phase_duration_seconds—— 闭环吞吐与每阶段延迟。opskeeper_tool_invocations_total/opskeeper_tool_duration_seconds—— 每个工具的调用次数与延迟。opskeeper_llm_requests_total/opskeeper_llm_tokens_total—— 每个 Worker 的 LLM 用量。opskeeper_http_requests_total/opskeeper_http_request_duration_seconds—— API 健康度。
事件演练
每季度至少跑一次演练。仓库自带 4 个可复现的 PostgreSQL 场景;用 cmd/incident-seed 写入后确认:
- 每个场景的闭环都能走到
postmortem。 - 提案审计链校验通过(遍历
chat_proposal_audit哈希)。 - verifier 返回的
VerifiedDelta与预期指标白名单一致。 - reporter 在 60 秒内写出复盘。
数据保留
loop_event_log 每行都带 tenant 与时间戳,按租户配置定时清理。向量记忆保留到你的保留策略主动删除为止。 审计链根的外部锚定(透明日志)在 roadmap 上 —— 在那之前,数据库备份就是持久记录。