Files
awoooi/docs/architecture/ALERT_FLOW_COMPLETE.md
OG T 863fc5a426 docs: 新增監控告警完整流程文檔 (2026-03-29 ogt)
內容:
- 8 層架構圖 (ASCII)
- 工具/服務清單表格
- 配置/代碼檔案清單
- 完整資料流說明
- E2E 驗證機制 (ADR-025/035)
- 故障排查指南

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-28 22:25:14 +08:00

13 KiB
Raw Blame History

AWOOOI 監控告警完整流程

建立日期: 2026-03-29 (台北時區) 建立者: Claude Code 版本: v1.0


1. 架構圖 (ASCII)

┌──────────────────────────────────────────────────────────────────────────────┐
│                           AWOOOI 監控告警架構 (E2E)                           │
└──────────────────────────────────────────────────────────────────────────────┘

Layer 1: 告警生產端
═══════════════════════════════════════════════════════════════════════════════

  Prometheus          K8s Event        Sentry           SignOz
  (Alertmanager)      Watcher          (Error Tracking) (Observability)
      │                  │                 │                │
      └──────┬───────────┴─────────────────┴────────────────┘
             │
             ▼
  ┌─────────────────────────────────────────────────────────┐
  │  告警接收層 (Alert Reception)                            │
  │  - /api/v1/webhooks/alerts (Prometheus)                │
  │  - /api/v1/webhooks/sentry (Sentry Issues)             │
  │  - /api/v1/signals (SignOz Metrics)                    │
  └─────────────────────────────────────────────────────────┘
             │
             ▼
Layer 2: 告警聚合與去重
═══════════════════════════════════════════════════════════════════════════════

  ┌──────────────────────────────────────────────────────────┐
  │ Signal Producer (Redis Streams)                          │
  │ - 告警指紋生成 (SHA256 Hash)                              │
  │ - 10 分鐘 TTL 去重                                       │
  │ - Trace Context 注入 (Phase 15.2)                       │
  └────────┬─────────────────────────────────────────────────┘
           │
           ▼
  ┌──────────────────────────────────────────────────────────┐
  │ Incident Engine v1.2 (DualMemory)                       │
  │ - 事件聚合 (30 分鐘時間窗口)                               │
  │ - Lua 原子操作 (消除 Race Condition)                      │
  │ - Working Memory: Redis (7天TTL) + Episodic: PostgreSQL│
  └────────┬─────────────────────────────────────────────────┘
           │
           ▼
Layer 3: AI 決策與分析
═══════════════════════════════════════════════════════════════════════════════

  ┌──────────────────────────────────────────────────────────┐
  │ OpenClaw AI Decision Engine (True LLM)                  │
  │                                                          │
  │  備援順序: Gemini → Ollama → Claude → Mock              │
  │                                                          │
  │  整合 SignOz Gold Metrics:                              │
  │  - RPS (流量趨勢)                                        │
  │  - Error Rate (錯誤率)                                   │
  │  - P99 Latency (99百分位延遲)                            │
  │                                                          │
  │  輸出結構化決策:                                          │
  │  - 根本原因分析 (root_cause)                             │
  │  - 責任判定 (FE/BE/INFRA/DB/COLLAB)                    │
  │  - 信心度評分 (0.0-1.0) ← LLM 真實計算                   │
  │  - 修復建議 (kubectl 命令)                               │
  │  - 風險等級 (LOW/MEDIUM/HIGH/CRITICAL)                 │
  └────────┬─────────────────────────────────────────────────┘
           │
           ▼
Layer 4: 批准簽核
═══════════════════════════════════════════════════════════════════════════════

  ┌──────────────────────────────────────────────────────────┐
  │ Approval Manager                                         │
  │ - 建立待簽核卡片 (Approval Records)                       │
  │ - 存入 PostgreSQL + Redis (Working Memory)               │
  │ - Incident-Approval 同步 (ADR-027)                      │
  └────────┬─────────────────────────────────────────────────┘
           │
           ▼
Layer 5: Telegram 通知
═══════════════════════════════════════════════════════════════════════════════

  ┌──────────────────────────────────────────────────────────┐
  │ Telegram Gateway                                         │
  │                                                          │
  │ 訊息格式 (SOUL.md):                                      │
  │ ┌───────────────────────────────────────┐               │
  │ │ 🚨 CRITICAL | harbor-core             │               │
  │ │ ═══════════════════════════════════    │               │
  │ │ 🤖 AI 仲裁判定                        │               │
  │ │ 👥 責任: BE (後端)                   │               │
  │ │ 📊 信心: 🟢 88%                      │               │
  │ │ 💰 Tokens: 1,234 / $0.0012           │  ← 新增!     │
  │ │ 💡 原因: JVM Heap 配置不當            │               │
  │ │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    │               │
  │ │ 📊 SignOz 指標                       │               │
  │ │ ├ RPS: 150.2 📈                     │               │
  │ │ ├ Error: 🟢 0.5%                    │               │
  │ │ └ P99: 245ms ➡️                     │               │
  │ │                                       │               │
  │ │ [✅ 簽核] [❌ 拒絕]                   │               │
  │ └───────────────────────────────────────┘               │
  └────────┬─────────────────────────────────────────────────┘
           │
           ▼
Layer 6: 執行與觀測
═══════════════════════════════════════════════════════════════════════════════

  ┌──────────────────────────────────────────────────────────┐
  │ K8s Executor + Observability                             │
  │ - 簽核通過後執行 kubectl 指令                              │
  │ - Shadow Mode: 日誌輸出,不執行                           │
  │ - SignOz + Sentry + Langfuse 三層觀測                    │
  └──────────────────────────────────────────────────────────┘

2. 工具/服務清單

工具/服務 IP:Port 用途 狀態
Prometheus 192.168.0.188:9090 指標收集 + 告警規則
Alertmanager 192.168.0.188:9093 告警路由 + 去重
SignOz 192.168.0.188:3301 Traces/Metrics/Logs
Sentry 192.168.0.110:9000 錯誤追蹤 + Session Replay
Langfuse 192.168.0.188:3100 LLMOps (Token/Cost)
OpenClaw 192.168.0.188:8088 AI 根因分析
Ollama 192.168.0.188:11434 本地 LLM (備援)
Telegram api.telegram.org 行動戰情室
PostgreSQL 192.168.0.110:5432 Incident/Approval 持久化
Redis 192.168.0.112:6379 Working Memory
K3s 192.168.0.125 (VIP) 容器編排

3. 配置檔案清單

檔案路徑 用途 關鍵配置
k8s/awoooi-prod/03-secrets.yaml K8s Secrets OPENCLAW_TG_BOT_TOKEN
k8s/awoooi-prod/04-configmap.yaml ConfigMap AI_FALLBACK_ORDER, OTEL 端點
k8s/awoooi-prod/02-network-policy.yaml NetworkPolicy DNS 規則
.github/workflows/cd.yaml CD Pipeline ADR-035 三層驗證

4. 代碼檔案清單

檔案路徑 功能 關鍵邏輯
apps/api/src/api/v1/webhooks.py 告警接收 Router HMAC 驗證, 指紋去重
apps/api/src/services/openclaw.py AI 決策引擎 LLM 備援, Token 追蹤
apps/api/src/services/telegram_gateway.py Telegram 推送 SOUL.md 格式
apps/api/src/services/consensus_engine.py 多專家共識 Expert System
apps/api/src/models/ai.py AI 模型定義 OpenClawDecision
apps/api/src/core/prompts.py LLM Prompt OPENCLAW_SYSTEM_PROMPT v7.1

5. 資料流說明

5.1 Prometheus 告警流程

Prometheus Alert 觸發
    ↓
Alertmanager 聚合
    ↓
HTTP POST → /api/v1/webhooks/alerts
    ↓
[webhooks.py] HMAC 驗證 + 指紋去重
    ├─ 重複告警 → hit_count+1, 跳過 LLM
    └─ 新告警 → 繼續
    ↓
[openclaw.py] AI 分析
    ├─ SignOz Gold Metrics 擷取
    ├─ LLM 呼叫 (Gemini → Ollama → Claude)
    ├─ Token/Cost 追蹤 ← 新增!
    └─ 輸出: OpenClawDecision
    ↓
[approval_db.py] 建立待簽核卡片
    ↓
[telegram_gateway.py] 推送通知
    ├─ 💰 Tokens: X / $Y.YYYY ← 新增!
    └─ SignOz 指標嵌入

5.2 Confidence 信心分數 (2026-03-29 修復)

之前:

  • models/ai.pydefault=0.8
  • LLM 沒輸出 confidence 時Pydantic 填入預設值
  • 結果: 信心分數永遠是 80%

現在:

  • confidence 改為 REQUIRED (無預設值)
  • LLM 沒輸出時,強制設為 0.5 + COLLAB
  • 結果: 信心分數是 LLM 真實計算

6. 告警鏈路 E2E 驗證 (ADR-025/035)

Layer 1: Pre-flight
    └─ GitHub Secrets 存在性檢查

Layer 2: Deploy
    └─ K8s Secrets 自動注入 (kubectl patch)

Layer 3: Post-Deploy
    └─ 發送測試告警驗證 success: true

Layer 4: 監控
    └─ 連續 1 小時無告警 → 觸發 CRITICAL

7. 常見故障排查

故障現象 根本原因 排查步驟
Telegram 無通知 Token 失效 / Secret 未注入 kubectl get secret awoooi-secrets -o yaml
告警 404 URL 路徑錯誤 確認 /api/v1/webhooks/alerts (複數!)
信心分數永遠 80% Pydantic 預設值 已修復: d469a23
OpenClaw 超時 Ollama 加載慢 curl http://192.168.0.188:11434/api/tags

8. 相關 ADR

ADR 主題
ADR-025 告警鏈路 E2E 驗證
ADR-027 Incident-Approval 同步
ADR-035 Telegram Secrets 自動注入

維護者: Claude Code 最後更新: 2026-03-29