Files
awoooi/docs/reference/ALERT-TAXONOMY-CATALOG.md
OG T 43c96890d1 docs: 新增4份治理文件 — 告警目錄/AI模型卡/事後分析模板/值班手冊
- docs/reference/ALERT-TAXONOMY-CATALOG.md:16大類、56筆alertname、24條Rule優先順序表
- docs/ai/AI-MODEL-CARDS.md:7個AI模型治理卡(deepseek/qwen/gemini/claude/nemotron)+fallback順序
- docs/templates/POSTMORTEM-TEMPLATE.md:對齊report_generation_service,[AUTO]欄位已標記
- docs/operations/ON-CALL-HANDBOOK.md:P0/P1 SOP、Kill Switch、SLO應對、常用指令速查

建立: 2026-04-14 台北時間 Claude Sonnet 4.6(戰術B Phase 1 完整收尾)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-14 15:29:12 +08:00

11 KiB
Raw Permalink Blame History

AWOOOI 告警分類目錄Alert Taxonomy Catalog

文件類型: 告警分類權威目錄
版本: v1.0
建立日期: 2026-04-14台北時間
建立者: Claude Sonnet 4.6(首席架構師)
資料來源: alert_types.py56 筆)、alert_rules.yaml24 條規則)、classify_alert_early()
維護方式: alert_types.py 為 Layer 2 fallback新類型優先加入 alert_rules.yamlLayer 1


告警分類三層架構

Layer 1 → alert_rules.yaml (incident_type 欄位,優先)
Layer 2 → ALERTNAME_TO_TYPE dict (alert_types.pyfallback)
Layer 3 → "custom" (未匹配,兜底)

程式碼入口: alert_rule_engine.get_incident_type(alertname) — 已整合三層降級


類別目錄16 大類)

# 類別 ID 中文說明 預設 Action 風險等級 數量
1 host_down 主機完全失去回應 RESTART_SERVICE HIGH 5
2 host_cpu 主機 CPU 過載 NO_ACTION MEDIUM 2
3 host_memory 主機記憶體不足 NO_ACTION MEDIUM 2
4 disk_full 磁碟空間耗盡 NO_ACTION HIGH 3
5 backup_failure 備份任務失敗 NO_ACTION MEDIUM 3
6 k8s_node_failure K8s 節點異常 NO_ACTION CRITICAL 3
7 k8s_pod_crash Pod 崩潰/未就緒 KUBECTL_ROLLOUT_RESTART HIGH 4
8 k8s_deployment_mismatch 部署副本數不符 KUBECTL_SCALE MEDIUM 1
9 database_down 資料庫服務下線 RESTART_SERVICE CRITICAL 2
10 database_performance 資料庫效能異常 NO_ACTION MEDIUM 6
11 service_down 內部服務下線 RESTART_SERVICE HIGH 9
12 service_404 外部服務/網站無法連線 NO_ACTION MEDIUM 5
13 ssl_expiry SSL/TLS 憑證到期 NO_ACTION MEDIUM 2
14 alert_chain_broken 告警鏈路斷裂 NO_ACTION CRITICAL 4
15 docker_container_unhealthy Docker 容器異常 RESTART_SERVICE MEDIUM 2
16 auto_repair_degraded 自動修復效率下降 NO_ACTION HIGH 2
high_cpu / high_memory 舊版相容 alias 3
custom 未匹配兜底 NO_ACTION LOW

詳細分類清單

1. 主機層Host Layer

host_down — 主機失去回應

alertname 說明 SSH 可用?
HostDown 主機完全失去 ICMP/TCP 回應 否(已失聯)
  • 決策路徑: TYPE-3高風險人工審核
  • 修復模式: SSH 路徑若主機重新上線後or 手動介入
  • Rule 匹配: host_down 規則priority 100

host_cpu — CPU 過載

alertname 說明
HostHighCpuLoad 主機 CPU 負載持續超過閾值
HighCPUUsage 舊版 alias相容保留
  • 決策路徑: LLM 分析 → 識別高耗 CPU 程序 → NO_ACTIONINFO
  • Rule 匹配: host_high_cpu 規則priority 115

host_memory — 記憶體不足

alertname 說明
HostOutOfMemory 主機可用記憶體低於 10%
HighMemoryUsage 舊版 alias相容保留
RedisMemoryHigh Redis 記憶體超過 80%
  • 決策路徑: NO_ACTIONINFO建議人工清理
  • Rule 匹配: host_out_of_memory 規則priority 110

disk_full — 磁碟空間耗盡

alertname 說明
HostOutOfDiskSpace 主機磁碟剩餘空間不足
DiskSpaceLow 舊版 alias相容保留
  • 決策路徑: TYPE-1INFOlog 分析後 NO_ACTION
  • Rule 匹配: disk_full 規則priority 120

backup_failure — 備份失敗

alertname 說明
HostBackupFailed 主機備份腳本失敗
VeleroBackupFailed Kubernetes Velero 備份失敗
VeleroBackupNotRun Velero 備份超過預定時間未執行
  • 決策路徑: NO_ACTION通知統帥
  • SLA 影響: RPO 可能受損,需人工確認

2. Kubernetes 層K8s Layer

k8s_node_failure — 節點異常

alertname 說明
K3sNodeNotReady K3s 節點 NotReady 狀態
KubeNodeNotReady Kubernetes 節點 NotReady
KubeNodeUnreachable 節點無法連線
  • 決策路徑: TYPE-3CRITICAL強制人工審核
  • 禁止自動修復: 節點問題影響全叢集,不自動 drain/cordon

k8s_pod_crash — Pod 崩潰

alertname 說明
KubePodCrashLooping Pod 反覆崩潰重啟CrashLoopBackOff
KubePodNotReady Pod 持續未就緒
  • 決策路徑: LLM RCA → rollout restart
  • 標準 kubectl: kubectl rollout restart deployment/{name} -n {namespace}
  • Rule 匹配: pod_crash_looping / pod_not_ready 規則priority 50/55

k8s_deployment_mismatch — 副本數不符

alertname 說明
KubeDeploymentReplicasMismatch 實際 Pod 數 ≠ 期望副本數
  • 決策路徑: LLM 分析 → kubectl scale需人工確認
  • 注意: --replicas=0 被安全閘阻擋ADR-064

3. 資料庫層Database Layer

database_down — 資料庫下線

alertname 說明
PostgreSQLDown PostgreSQL 無法連線
RedisDown Redis 無法連線
  • 決策路徑: TYPE-3CRITICAL→ 人工審核後 rollout restart
  • Rule 匹配: postgresql_down / redis_down 規則priority 30/35

database_performance — 資料庫效能

alertname 說明
PostgreSQLHighConnections 連線數過高
PostgreSQLSlowQueries 慢查詢偵測
PostgreSQLDeadlocks 死鎖偵測
PostgreSQLTooManyConnections 超過最大連線限制
RedisKeyEviction Redis key 被驅逐
RedisConnectionsHigh Redis 連線數過高
RedisCommandLatencyHigh Redis 命令延遲過高
  • 決策路徑: LLM 分析 → NO_ACTIONINFO + 建議)

4. 服務層Service Layer

service_down — 內部服務下線

alertname 說明 主機位置
OpenClawDown OpenClaw AI 引擎下線 188
MinIODown MinIO 物件儲存下線 188
HarborDown Harbor 容器倉儲下線 188
GiteaDown Gitea CI/CD 服務下線 188
AlertmanagerDown Alertmanager 下線(鏈路失效) 110
SignOzDown SignOz 監控平台下線 110
SentryDown Sentry 錯誤追蹤下線
KaliScannerDown Kali 安全掃描器下線 121
  • Rule 覆蓋:
    • minio_downpriority 10→ SSH docker restart
    • gitea_downpriority 125→ NO_ACTIONCI/CD 服務,不自動修復)
    • openclaw_downpriority 40→ kubectl rollout restart
  • 修復模式: 視服務所在層K8s Pod / Docker Container / 主機服務)

service_404 — 外部網站/服務異常

alertname 說明
MoWoooWorkDown 工作用外部網站下線
TsenyangWebsiteDown 個人網站下線
StockWoooWorkDown 股票工具網站下線
BitanWoooWorkDown 碧潭相關網站下線
ExternalSiteSSLExpiringSoon 外部網站 SSL 到期
TargetDown 舊版 blackbox 告警 alias
  • Rule 匹配: external_site_downpriority 127→ NO_ACTION通知
  • 決策路徑: TYPE-1INFO

ssl_expiry — SSL/TLS 憑證到期

alertname 說明
SSLCertExpiringSoon 憑證即將到期(< 30 天)
ExternalSiteSSLExpiringSoon 外部網站憑證到期
  • Rule 匹配: ssl_cert_expiringpriority 126→ NO_ACTION提醒
  • 修復方式: 人工 certbot renew / cert-manager 更新

5. 告警鏈路層Alert Chain Layer

alert_chain_broken — 告警鏈路斷裂

alertname 說明
AlertChainBroken_Alertmanager Alertmanager 停止發送告警
AlertChainBroken_Sentry Sentry 停止發送錯誤通知
NoAlertsReceived2Hours 2 小時無任何告警watchdog 失效)
AlertChainUnhealthy 鏈路整體健康度低
  • 嚴重性: CRITICAL告警鏈路失效 = 系統失明)
  • Rule 匹配: alert_chain_brokenpriority 20
  • 通知: Telegram 緊急通道(立即)

6. 容器層Docker Layer

docker_container_unhealthy — Docker 容器異常

alertname 說明
DockerContainerUnhealthy Docker healthcheck 失敗
DockerContainerExited 容器意外退出(非 K8s 管理的裸 Docker
  • 修復模式: SSH → docker restart {container_name}
  • 注意: 不可用 docker restart 重啟整個 Docker Engine會殺死 Gitea

7. 自動修復監控Auto Repair Monitoring

auto_repair_degraded — 飛輪效率下降

alertname 說明
AutoRepairLowSuccessRate SLO-1 < 80%7天滾動
PermanentFixRequired 同一告警重複修復 > 3 次
  • 觸發: HITL-8SLO-1 < 50% 連續 2h
  • 處理: TYPE-8M 通知,建議暫停自動修復
  • Root Cause: 見 feedback_auto_repair_flywheel_v2.md

Alert Rule 優先順序速查

Priority Rule ID alertname 關鍵字 Action
10 minio_down MinioDown, MinIODown SSH restart
20 alert_chain_broken AlertChainBroken_* NO_ACTION
30 postgresql_down PostgreSQLDown kubectl restart
35 redis_down RedisDown kubectl restart
40 openclaw_down OpenClawDown kubectl restart
50 pod_crash_looping KubePodCrashLooping kubectl restart
55 pod_not_ready KubePodNotReady kubectl restart
100 host_down HostDown NO_ACTION
110 host_out_of_memory HostOutOfMemory NO_ACTION
115 host_high_cpu HostHighCpuLoad NO_ACTION
120 disk_full HostOutOfDiskSpace NO_ACTION
125 gitea_down GiteaDown NO_ACTION
126 ssl_cert_expiring SSLCertExpiringSoon NO_ACTION
127 external_site_down MoWoooWorkDown NO_ACTION
999 generic_fallback * NO_ACTION

總計: 24 條規則56 個 alertname 對應


新增告警類別 SOP

  1. 確認 alertname 是否已在 ALERTNAME_TO_TYPE 中 → 如有,只需在 alert_rules.yaml 補規則
  2. 決定 incident_type(參考現有 16 類;必要時新增)
  3. alert_rules.yaml 新增規則(priority < 999> 127< 999 為安全區)
  4. 若新 incident_type,在 alert_types.py 補 dict 條目
  5. 更新本文件 + LOGBOOK.md

本文件由 Claude Sonnet 4.6 於 2026-04-14 台北時間建立,以 alert_types.py v56筆 + alert_rules.yaml v24條 為資料來源