Files
awoooi/docs/adr/ADR-070-aiops-full-automation-loop.md
2026-04-12 00:09:18 +08:00

3.8 KiB
Raw Blame History

ADR-070: 全自動 AIOps 閉環 — MCP Phase 1-4

狀態: Accepted
日期: 2026-04-11 (台北時間)
作者: Claude Sonnet 4.6 + 首席架構師審查
關聯: docs/superpowers/specs/2026-04-10-infra-rebuild-sprint-abc-design.md § 14


問題

AWOOOI AIOps 告警閉環存在三大盲點:

  1. 主機層盲點70%:所有修復動作都在 K8s 層,無法 SSH 到宿主機排查 Docker/Nginx/PM2 問題
  2. 情報缺乏:決策引擎只有告警標籤,無即時 Prometheus 指標輔助診斷
  3. 知識沉澱不完整KM 只記錄動作,缺少「執行前情境 + 執行後驗證」三段資料
  4. 零寫死判斷symptom_pattern 應由 AI 動態生成,不應硬編碼

決定

採用 MCP Provider 架構(四個 Phase 遞進實作):

MCP Phase 1 — K8s MCP 強化

新增 6 個 K8s 工具:pod_logs, watch_rollout, get_events, describe_resource, get_hpa, get_node_status

MCP Phase 2 — 主機層 + 情報收集

  • Phase 2a ssh_provider.py15 工具,群組 A 診斷9 工具)+ 群組 B 操作6 工具)
    • 四層守衛SSH 連線池、asyncssh、already-known-hosts、參數白名單
    • 支援主機188ollama/ 110wooo/ 111ollama
  • Phase 2b prometheus_provider.py3 工具query / range / alert_history

MCP Phase 3 — GitOps + 錯誤追蹤

  • argocd_provider.py3 工具list_apps / get_app_status / get_sync_history
    • TLS verify=Falseself-signed, app name 白名單 ^[a-zA-Z0-9][a-zA-Z0-9._-]{0,62}$
  • sentry_provider.py3 工具list_issues / get_issue / search_events
    • issue_id 僅允許數字 ^\d{1,20}$

MCP Phase 4 — NemoClaw 整合 + KM 三段資料

Phase 4a — NemoClaw Second Opiniondeepseek-r1:14b

  • 觸發條件:confidence < 0.7
  • 呼叫 Ollama 188:11434解析 <think>...</think> CoT
  • 結果寫入 proposal_data["advisory_note"],由 Telegram 推送

Phase 4b — K8s 狀態後驗證:

  • 自動修復完成後呼叫 K8sProvider.kubectl_get(pods)
  • 寫入 incidents.k8s_state_after

Phase 4c — AI 動態 Playbook 草稿:

  • 新 alertname 首次出現時,qwen2.5:7b-instruct 生成 5 段結構化草稿
  • 去重semantic_search threshold=0.92(避免重複沉澱)
  • 狀態標記 DRAFT人工審核後升為 APPROVED

後果

正面

  • 主機層告警可自動修復Nginx down / Docker 容器異常 / 磁碟滿)
  • KM 三段資料完整(執行前指標 + 動作 + 執行後 K8s 狀態)
  • 新告警 AI 自動生成 Playbook 草稿,飛輪冷啟動速度提升

風險

  • SSH 工具有命令注入風險 → 四層白名單守衛緩解
  • NemoClaw 呼叫增加 Ollama 負載 → 僅在信心 < 0.7 觸發,非必經路徑
  • Playbook 草稿品質依賴 qwen2.5:7b → DRAFT 狀態人工審核把關

實作記錄

Phase Commit 檔案
MCP Phase 1 a29e5e1 k8s_provider.py +6 工具
MCP Phase 2a 6351e9a ssh_provider.py 15 工具
MCP Phase 2b 6351e9a prometheus_provider.py 3 工具
MCP Phase 3 a2cc985 argocd_provider.py + sentry_provider.py
MCP Phase 4a f3ee577 decision_manager._nemoclaw_second_opinion()
MCP Phase 4b 0fa3b35 decision_manager._push_auto_repair_result() k8s_state_after
MCP Phase 4c 7eb49f9 decision_manager._generate_playbook_draft_if_new()
providers 全註冊 a2cc985 providers/__init__.py 10 providers
生產驗收 2026-04-11 10 providers enabled2 pods Running
全自動化三大修復 c439277 auto_approve.py high risk 全開放 + DESTRUCTIVE_PATTERNSdecision_manager._collect_mcp_context() MCP 前置收集;webhooks.py target_resource 修正
Tier 3 CR 修補 8be87b0 C1 ternary bug / C2 timeout / C3 DESTRUCTIVE_PATTERNS 補全 / I1 RFC-1918 / I4 25 tests