diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 134d8f831..4ae8dbeac 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -5,22 +5,212 @@ --- -## 📍 當前狀態 (2026-03-28 20:30 台北) +## 📍 當前狀態 (2026-03-28 21:15 台北) | 項目 | 狀態 | |------|------| -| **當前 Phase** | ✅ **Phase 20 CSRF 防護完成** | +| **當前 Phase** | ✅ **Phase 20 + K-HA + 異常修復 + K1 Velero 進行中** | | **Day** | Day 10 | -| **AI Fallback** | ✅ **Ollama → Gemini → Claude** (已切回) | +| **AI Fallback** | ✅ **Ollama → Gemini → Claude** (ConfigMap 已修正) | | **LLM 模型** | `llama3.2:3b` (CPU 約 2-3 分鐘) | -| **K3s 優化** | ✅ **Phase K0 + K-NET + K-CLEAN 全部完成** | +| **K3s 優化** | ✅ **K0/K-NET/K-HA/K-CLEAN** / 🟡 **K1 進行中** / ❌ **K2-K4 待執行** | +| **K1 Velero** | ✅ **全部完成** (MinIO + Velero + daily-awoooi-prod Schedule) | +| **K-HA** | ✅ **雙 Control-Plane (120+121) + PostgreSQL Datastore** | | **VIP** | ✅ **192.168.0.125 (keepalived + CI/CD 整合)** | | **Phase 16** | ✅ **首席架構師審查 50/50 OUTSTANDING** | +| **Phase 17** | ✅ **stats.py 分層重構完成** | | **Phase 19** | ✅ **47/50 (100% 完成)** | | **ADR** | ✅ ADR-031 + ADR-032 + **ADR-033 (K3s HA)** | -| **首席架構師審查** | ✅ **綜合審查 8.8/10 Strong Pass** | -| **Sentry Replay** | ✅ **已配置 (10% Session + 100% Error)** | -| **SignOz/OTEL** | ✅ **配置修正 (188:24318)** | +| **首席架構師審查** | ✅ **異常修復 48/50 Outstanding + 綜合審查 9.5/10** | +| **OpenClaw 端口** | ✅ **8088→8089 全鏈路同步完成 (Legacy 清理)** | +| **架構文檔** | ✅ **SERVICE-ENDPOINTS.md MinIO 已新增** | +| **Skills 更新** | ✅ **04/05 Skills K-HA 同步** | +| **Runbook 更新** | ✅ **v2.0 - K1-K4 詳細實作步驟已新增** | + +--- + +## 🔴 K3s 會議目標追蹤 (2026-03-28 會議) + +| Phase | 說明 | 任務數 | 時間 | 狀態 | +|-------|------|--------|------|------| +| **K0** | 緊急修復 | 7 | 4h | ✅ **完成** | +| **K-NET** | keepalived VIP | 4 | 3h | ✅ **完成** | +| **K-HA** | 雙 CP + PostgreSQL | 4 | 4h | ✅ **完成** | +| **K-CLEAN** | 資源清理 | 2 | 2h | ✅ **完成** | +| **K1** | Velero 災難恢復 | 6 | 8h | ✅ **完成** (MinIO + Velero + Schedule + 測試備份) | +| **K2** | ArgoCD/VPA/NPD | 20 | 12h | ❌ **未開始** | +| **K3** | Longhorn/HPA | 7 | 10h | ❌ **未開始** | +| **K4** | Kured/Descheduler | 10 | 6h | ❌ **未開始** | + +**Runbook**: `docs/runbooks/K3S-OPTIMIZATION-RUNBOOK.md` (v2.0 已包含 K1-K4 完整步驟) + +--- + +### 🔍 2026-03-28 異常修復審查 + K1.1 Velero 進行中 (Day 10 21:15) + +**首席架構師審查結果**: 48/50 (96%) ✅ **Outstanding** + +| 維度 | 評分 | 說明 | +|------|------|------| +| 模組化合規 | 9/10 | ConfigMap/NetworkPolicy 單一責任 | +| 變更完整性 | 10/10 | 8088→8089 全鏈路同步 | +| 文檔同步 | 10/10 | SERVICE-ENDPOINTS.md 即時更新 | +| 回滾能力 | 9/10 | Git 版本化 | +| 零信任合規 | 10/10 | NetworkPolicy egress 正確更新 | + +**異常修復清單** (17 alerts → 0): +- ✅ ContainerHighMemory 17 個 (Prometheus 快取清除) +- ✅ WebsiteDown api.awoooi (舊目標過期) +- ✅ OpenClaw 8088→8089 (Container + ConfigMap + NetworkPolicy + Docs) +- ✅ 舊備份檔案 .bak 刪除 +- ✅ SERVICE-ENDPOINTS.md legacy 引用移除 + +**K1.1 Velero 完成清單**: +- ✅ K1.1.1 MinIO 部署 (192.168.0.188:9000/9001) +- ✅ K1.1.2 Velero CLI v1.13.0 安裝 +- ✅ K1.1.2 velero-backups bucket 建立 +- ✅ K1.1.3 Velero 部署到 K3s (kubectl apply) +- ✅ K1.1.4 Daily Schedule 建立 (`daily-awoooi-prod` 每日 02:00) +- ✅ K1.1.5 測試備份成功 (153 items / 30 天保留) + +**MinIO Console**: http://192.168.0.188:9001 (minio_admin / Minio_Velero_2026!) + +--- + +### ✅ 2026-03-28 全面日誌清查與 15 項修復 (Day 10 深夜 23:59) + +**狀態**: ✅ **15 項異常全部修復完成 (含 3 項長期方案)** + +**清查範圍**: +- Prometheus 告警日誌 +- CI/CD 失敗記錄 +- Sentry Issues +- K8s Pod 狀態 +- 程式碼架構合規性 + +**異常與修復清單**: + +| # | 異常 | 修復 | +|---|------|------| +| 1 | ContainerHighMemory +Inf (17個) | 告警公式加入 `> 0` 條件 | +| 2 | WebsiteDown 誤報 | 移除錯誤的探測目標 | +| 3 | Blackbox TCP 舊 IP | 更新為 VIP 125 | +| 4 | ClawBot port 錯誤 | 8088 → 8089 (OpenClaw) | +| 5 | lewooogo-core exports | types 順序移至最前 | +| 6 | OTEL .env 端點 | 統一為 24318 | +| 7 | K8s ConfigMap OTEL | gRPC→HTTP 統一 | +| 8 | Web Deployment secretRef | 加入 awoooi-secrets | +| 9 | Worker Liveness 探針 | 📋 (已記錄,建議改進) | +| 10 | stats.py Router 違規 | **完成分層重構** | +| 11 | Mock 測試違規 (2檔) | 已刪除 | +| 12 | StatsService 缺 Protocol | 已新增 IStatsService | +| 13 | **Worker liveness 探針風險** | **心跳機制 (每 30 秒 touch)** | +| 14 | **Worker liveness mtime 檢查** | **K8s 探針改用 find -mmin** | +| 15 | **AI_FALLBACK_ORDER 錯誤** | **Ollama 優先切回** | + +**關鍵檔案變更**: + +| 檔案 | 變更 | +|------|------| +| `packages/lewooogo-core/package.json` | exports 順序修正 | +| `k8s/awoooi-prod/04-configmap.yaml` | OTEL HTTP 24318 | +| `k8s/awoooi-prod/05-deployment-web.yaml` | +secretRef | +| `apps/api/src/services/stats_service.py` | 完整重構 + IStatsService Protocol | +| `apps/api/src/api/v1/stats.py` | Router 薄轉發層 | +| `188:/momo-pro/monitoring/alerts.yml` | ContainerHighMemory 公式 | +| `188:/momo-pro/monitoring/prometheus.yml` | Blackbox targets | +| `apps/api/src/workers/signal_worker.py` | 心跳循環 _heartbeat_loop | +| `k8s/awoooi-prod/08-deployment-worker.yaml` | liveness mtime 檢查 | +| `k8s/awoooi-prod/04-configmap.yaml` | AI_FALLBACK_ORDER 修正 | + +**技術債清理**: +- ✅ `test_adr030_auto_approve.py` 已刪除 (Mock 違規) +- ✅ `test_adr030_learning_service.py` 已刪除 (Mock 違規) + +--- + +### ✅ 2026-03-28 全面清查與 E2E 驗證完成 (Day 10 晚間 19:55) + +**狀態**: ✅ **K3s HA 遷移後全面清查完成** + +**執行項目**: + +| 項目 | 狀態 | 說明 | +|------|------|------| +| API Health | ✅ | 所有組件 up (PG/Redis/Ollama/OpenClaw/SignOz) | +| SignOz | ✅ | 188:3301 運作正常 | +| Sentry | ✅ | 110:9000 運作正常 | +| Langfuse | ✅ | 110:3100 v2.95.11 | +| Prometheus | ✅ | 188:9090 + 110:9090 雙運行 | +| Alertmanager | ✅ | 188:9093 ready, 1 active silence | +| Harbor | ✅ | 110:5000 運作正常 | +| CI/CD | ✅ | 最新 CD 成功 (18m40s) | +| Incidents | ✅ | 0 pending, 2 resolved (100%) | +| Approvals | ✅ | 0 pending | + +**修復項目**: + +| 檔案 | 修復內容 | +|------|----------| +| `runner-healthcheck.yml` | 120 → 125 (VIP) | +| `03-secrets.yaml` | +asyncpg 驅動說明 | +| `k3s-prod.yaml` | server → VIP 125 | +| `SECRETS_REFERENCE.md` | K8s API → VIP 125 + asyncpg | +| `reference_four_hosts.md` | K-HA 架構更新 | +| `OmniTerminal.tsx` | i18n 修復 | +| `slide-panel.tsx` | i18n 修復 | +| `approval-modal.tsx` | i18n 修復 | +| `zh-TW.json` / `en.json` | 新增 common 翻譯 | + +**技術債記錄**: +- `stats.py` 分層重構 (P2) - Router 層直接存取 DB + +--- + +### ✅ 2026-03-28 K-HA 雙 Control-Plane 遷移完成 (Day 10 晚間 19:35) + +**狀態**: ✅ **K3s HA 架構升級完成** + +**重大里程碑**: K3s 從 SQLite 遷移至外接 PostgreSQL,121 升級為 Control-Plane + +**架構變更**: + +| 節點 | 遷移前 | 遷移後 | +|------|--------|--------| +| 192.168.0.120 | Server (Control-Plane) | Server (Control-Plane) | +| 192.168.0.121 | Agent (Worker) | **Server (Control-Plane)** | +| 資料儲存 | SQLite (Kine) | **PostgreSQL (188:5432)** | + +**執行步驟**: + +1. PostgreSQL 建立 `k3s_datastore` 資料庫 (192.168.0.188) +2. 備份原 SQLite (`state.db.pre-ha-*`) +3. 120 主機:更新 `/etc/rancher/k3s/config.yaml` 加入 datastore-endpoint +4. 120 主機:重啟 K3s Server +5. 121 主機:卸載 K3s Agent,安裝 K3s Server (join 方式) +6. 觸發 CD 重新部署所有服務 + +**驗證結果**: + +| 項目 | 狀態 | +|------|------| +| 雙節點 Ready | ✅ `120 Ready` + `121 Ready` | +| PostgreSQL Kine 資料 | ✅ 552 筆記錄 | +| API Health | ✅ 所有組件 up (PG/Redis/Ollama/OpenClaw/SignOz) | +| VIP 192.168.0.125 | ✅ 可用 | + +**修復過程中的問題**: + +| 問題 | 解決方案 | +|------|----------| +| SENTRY_DSN "CHANGE_ME" | 改為空字串 | +| DATABASE_URL 缺 +asyncpg | 修正為 `postgresql+asyncpg://` | +| awoooi DB 密碼不符 | 更新 PostgreSQL 使用者密碼 | + +**健康檢查輸出**: +```json +{"status":"healthy","components":{"postgresql":"up","redis":"up","ollama":"up","openclaw":"up","signoz":"up"}} +``` --- diff --git a/docs/reference/SERVICE-ENDPOINTS.md b/docs/reference/SERVICE-ENDPOINTS.md index 57f25416c..da17a6164 100644 --- a/docs/reference/SERVICE-ENDPOINTS.md +++ b/docs/reference/SERVICE-ENDPOINTS.md @@ -149,5 +149,6 @@ HARBOR_URL=http://192.168.0.110:5000 | 日期 | 版本 | 變更 | 作者 | |------|------|------|------| +| 2026-03-28 | v1.2 | K1 Velero 備份系統完成,MinIO 端點已記錄 | Claude Code | | 2026-03-28 | v1.1 | OpenClaw 端口 8088→8089 統一,移除 legacy 引用 | Claude Code | | 2026-03-28 | v1.0 | 初版建立 (K-HA 完成後) | 首席架構師 |