diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index b0f815d0..0e4244e8 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -3137,3 +3137,41 @@ bash scripts/reboot-recovery/full-stack-cold-start-check.sh --send-alert-test - 110 actions runner units 仍按策略最後放行:guardrail 已套用,`CPUQuota=200%`、`MemoryMax=2G`、`WatchdogUSec=0`;需在 load/core 穩定後逐步開啟。 - `Bad message` / `Structure needs cleaning` 是 host filesystem 層訊號;線上 clean-clone 已恢復服務,但完整歷史資料追溯需安排離線 `fsck` 或備份驗證。 - `drift-scanner-29633040-qrf8w` 為單次 CronJob Error,不阻斷主服務;後續可清理或調查。 + +--- + +## 2026-05-05(台北)— GCP Ollama 告警路徑止血與內網化決策 + +**觸發**:告警卡仍顯示 `Router: Gemini`,且 GCP-A / GCP-B Ollama 先前在告警 JSON prompt 上連續 504,導致 Gemini 備援產生費用。 + +### 已執行 + +| 範圍 | 結果 | +|------|------| +| 告警模型 | 將告警專用 Ollama 模型固定為 `gemma3:4b`,避免 `qwen3:14b` / `qwen2.5-coder:32b` 冷啟動拖入 Gemini | +| Production image | `awoooi-api` / `awoooi-worker` 已手動切到 `192.168.0.110:5000/awoooi/api:787acd3bda918f53b977f37133e0b5c73558033e` | +| Production env | 已明確設定 `ALERT_AI_ENFORCE_OLLAMA_FIRST=true`、`ALERT_AI_ALLOW_CLOUD_FALLBACK=true`、`ALERT_OLLAMA_MODEL=gemma3:4b` | +| GCP Ollama 保溫 | GCP-A / GCP-B 已卸載 14B / 32B 重模型,並以 `keep_alive=8h` 保溫 `gemma3:4b` | +| Meta W-6 降噪 | Trust Drift 未達 20% 時不再升級為 Meta System;現場 Redis 已加 6h dedup 防止重複通知 | + +### 現場驗證 + +```bash +kubectl -n awoooi-prod get deploy awoooi-api awoooi-worker -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.template.spec.containers[*]}{.name}={.image}{" "}{end}{"\n"}{end}' +# awoooi-api api=192.168.0.110:5000/awoooi/api:787acd3bda918f53b977f37133e0b5c73558033e +# awoooi-worker worker=192.168.0.110:5000/awoooi/api:787acd3bda918f53b977f37133e0b5c73558033e + +kubectl -n awoooi-prod exec deploy/awoooi-api -- printenv | grep -E 'ALERT_OLLAMA_MODEL|ALERT_AI_|OLLAMA_.*URL' +# ALERT_OLLAMA_MODEL=gemma3:4b +# ALERT_AI_ALLOW_CLOUD_FALLBACK=true +# ALERT_AI_ENFORCE_OLLAMA_FIRST=true +# OLLAMA_URL=http://192.168.0.110:11435 +# OLLAMA_SECONDARY_URL=http://192.168.0.110:11436 +# OLLAMA_FALLBACK_URL=http://192.168.0.111:11434 +``` + +### 架構決策 + +- 目前 `192.168.0.110:11435/11436` 是經由 110 nginx 轉發到 GCP 公網 IP,屬於過渡方案,不應作為長期 primary Ollama lane。 +- 建議建立 WireGuard site-to-site private mesh,讓 K3s / 110 / 111 / GCP-A / GCP-B 以私網 IP 互連,Ollama 僅綁定 mesh interface,並由 AwoooP Inference Gateway 統一路由、熔斷、佇列與模型保溫。 +- 注意:目前 GCP-A / GCP-B `/api/ps` 顯示 `size_vram: 0`,內網化可解決連線與安全問題,但無法讓 CPU-only GCP 等同 111 的 VRAM/GPU 效能;大模型應留在 111 或改用 GPU 型 GCP 節點。