chore: add runtime observability ops

This commit is contained in:
John
2026-07-02 07:04:50 +08:00
parent 04e308e582
commit 4420cca340
11 changed files with 556 additions and 44 deletions
@@ -11,6 +11,7 @@
- P4 Tool Gateway v1: 已完成第一步,普通用户默认不再暴露 Aider/OpenHands,显式用户白名单保留。
- P5 Worker Pool 运维化: 已完成第一步,Redis Router 支持 worker drain。
- 生产同步分支: 已从远程 `origin/main` 新建干净副本和分支 `memind-streaming-runtime-20260702`,用于远程开发机后续直接拉取。
- P3.5/P5.5 生产化补强: 进行中,先完成生产数据库和 `MindSpace` 备份,再增加 runtime metrics、健康检查脚本和 drain 运维脚本。
## 目标
@@ -431,6 +432,32 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr
- 不提交生产 `.env`、数据库、`MindSpace/``data/``users/``.tailscale/``logs/`、证书和密钥。
- 只提交代码、配置模板、部署样例和架构/运维文档。
### 2026-07-02 P3.5/P5.5 生产数据保护与运维补强
生产数据保护:
- 允许重启生产服务,但重启前必须保护好数据库和 `/Users/john/Project/Memind/MindSpace`
- 备份目录: `/Users/john/Project/memind_backups/20260702-065813-pre-p35-p55`
- `MindSpace` 使用 `rsync -a` 全量副本,文件数 `2137`,大小约 `120M`
- 数据库为 Aliyun RDS MySQL `goose`,已导出:
- `mysql-schema.sql`
- `mysql-manifest.json`
- `mysql-jsonl/*.jsonl`
- 表数 `85`,行数 `28296`
改造内容:
- Redis Router worker 状态增加:
- `stream_open_count`
- `stream_abort_count`
- `stream_error_count`
- `last_stream_started_at`
- `last_stream_ended_at`
- `score`
- 新增只读检查脚本 `scripts/check-stream-runtime.mjs`
- 新增 drain 运维脚本 `scripts/runtime-worker-drain.mjs`
- runtime 构建模板同步上述脚本,并将 RUNBOOK 中主路径更新为 `mm.tkmind.cn -> local nginx -> Portal :8081`
## 回滚策略
- P0: 修改前保留 `server.mjs` 备份;如启动失败,恢复备份并 `launchctl kickstart` Portal。