- 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>
6.6 KiB
AWOOOI 事後分析報告模板(Postmortem Template)
文件類型: 事後分析標準模板
版本: v1.0
建立日期: 2026-04-14(台北時間)
建立者: Claude Sonnet 4.6(首席架構師)
使用方式: 複製本模板,替換{佔位符}後提交至docs/postmortems/YYYY-MM-DD-{alertname}.md
對齊:report_generation_service.format_postmortem()自動填入欄位已標記[AUTO]
事後分析:{INCIDENT_TITLE}
Incident ID: {INC-YYYYMMDD-XXXXXX}
告警名稱: {alertname}
嚴重等級: {P0 / P1 / P2 / P3}
發生時間: {YYYY-MM-DD HH:MM}(台北時間) [AUTO]
解決時間: {YYYY-MM-DD HH:MM}(台北時間) [AUTO]
停機時長: {N} 分鐘 [AUTO]
撰寫人: {統帥 / SRE / AI 自動生成}
審查日期: {YYYY-MM-DD}
0. 執行摘要(Executive Summary)
三行以內,給不想讀全文的決策者看
- 發生了什麼: {一句話描述事件}
- 根本原因: {一句話描述根因}
- 最終處置: {人工介入 / 自動修復 / 降級 / 重啟}
- 影響範圍: {受影響服務} × {停機 N 分鐘} × {用戶影響程度}
1. 時間軸(Timeline)[AUTO from AIDecisionChain]
| 時間(台北) | 事件 |
|---|---|
{HH:MM} |
Alertmanager 觸發告警:{alertname} |
{HH:MM} |
AWOOOI API 接收 webhook(POST /webhooks/alerts) |
{HH:MM} |
LLM RCA 完成,hypothesis:{LLM假設},confidence:{0.XX} |
{HH:MM} |
Telegram 審核卡發出(TYPE-{1/2/3/4}) |
{HH:MM} |
{統帥} 審核:{APPROVE / REJECT / 未審核} |
{HH:MM} |
自動執行:{kubectl command / SSH command / NO_ACTION} |
{HH:MM} |
告警解除(Alertmanager resolved) |
{HH:MM} |
Playbook 萃取完成,知識庫更新 |
總耗時: {分析延遲 Xs} + {等待審核 Xm} + {執行 Xs} = {總計 Xm}
2. 根本原因分析(Root Cause Analysis)[AUTO]
2.1 AI 假設
{AIDecisionChain.hypothesis 欄位內容}
AI 信心度: {AIDecisionChain.confidence}
模型: {AIDecisionChain.model_used}
推理步驟:
{AIDecisionChain.reasoning_steps 列表}
2.2 實際根因(人工確認)
填寫:AI 假設是否正確?若不正確,真正的根因是?
- AI 假設是否正確:
{是 / 否 / 部分正確} - 實際根因:
{描述} - 觸發鏈:
{A → B → C → 告警}
2.3 原因分類
選擇適用的類別(可複選)
- 硬體問題(磁碟、記憶體、網路卡)
- 資源耗盡(磁碟滿、OOM、連線池滿)
- 程式碼 Bug(logic error、memory leak)
- 配置錯誤(YAML 錯誤、環境變數缺失)
- 依賴服務故障(外部 API、上游服務)
- 容量不足(流量峰值超出設計)
- 人為操作錯誤(誤刪、誤改)
- 告警誤報(規則設定過於敏感)
- 其他:
{描述}
3. 影響評估(Impact Assessment)
| 維度 | 內容 |
|---|---|
| 受影響服務 | {services} [AUTO from affected_services] |
| 用戶影響 | {無 / 部分功能降級 / 完全中斷} |
| 停機時長 | {N 分鐘} [AUTO] |
| 資料影響 | {無資料遺失 / 部分資料遺失 / 需確認} |
| SLO 影響 | SLO-1 成功率:{X%} / Error Budget 消耗:{X%} |
| 業務影響 | {描述具體業務損失或用戶體驗影響} |
4. 處置過程(Resolution)[AUTO + 人工補充]
4.1 自動修復
執行指令: {approval.action}
執行結果: {成功 / 失敗}
執行者: AIOps 自動執行
執行時間: {YYYY-MM-DD HH:MM}(台北)
4.2 人工介入
若有人工操作,填寫以下內容
- 操作者:
{統帥 / SRE} - 操作時間:
{YYYY-MM-DD HH:MM}(台北) - 執行步驟:
{步驟 1} {步驟 2} ... - 為何需要人工介入:
{AI 信心不足 / 自動修復失敗 / P0/P1 強制審核 / Kill Switch 啟動}
4.3 修復驗證
- 驗證方式:
{curl 測試 / Pod 狀態確認 / 告警解除 / 用戶確認} - 驗證結果:
{服務恢復正常 / 部分恢復 / 降級運行}
5. 飛輪學習(KM Update)[AUTO]
本次 Incident 是否產生了新的 Playbook?
- Playbook 萃取:
{是 / 否} - Playbook ID:
{PB-YYYYMMDD-XXXXXX}[若有] - 修復步驟:
{動作描述} - 加入知識庫:
{是 / 否(原因:{效果評分 < 3 / 統帥不建議})} - 知識庫查詢觸發:
{下次同類告警將自動匹配此 Playbook}
效果評分: {1-5} / 統帥回饋: {如有}
6. 預防措施(Action Items)
| # | 類型 | 描述 | 負責人 | 截止日期 | 狀態 |
|---|---|---|---|---|---|
| AI-1 | 監控優化 | {告警規則閾值調整} |
{統帥} |
{YYYY-MM-DD} |
{TODO} |
| AI-2 | 系統加固 | {修復根本原因} |
{統帥} |
{YYYY-MM-DD} |
{TODO} |
| AI-3 | 知識庫 | {更新 Playbook / 新增規則} |
AIOps | {自動} |
{自動} |
| AI-4 | 演練計畫 | {定期演練此類故障} |
{統帥} |
{YYYY-MM-DD} |
{TODO} |
7. 五個為什麼(5 Whys)
用於複雜/P0 事件;追溯到技術或流程根源
-
為什麼服務中斷?
→{描述直接原因} -
為什麼
{直接原因}發生?
→{描述次級原因} -
為什麼
{次級原因}沒有被預防?
→{描述} -
為什麼
{原因3}存在?
→{描述} -
為什麼
{原因4}沒有在系統設計中被考慮?
→{根本原因 — 技術債 / 流程缺失 / 資源不足}
根本改善方向: {描述}
8. 附件(Appendix)
8.1 相關 Logs
# 關鍵錯誤日誌(僅附最相關的 5-10 行)
{log lines}
8.2 相關截圖
附 Grafana / SignOz / Telegram 截圖路徑
docs/postmortems/assets/{INC-ID}-grafana.pngdocs/postmortems/assets/{INC-ID}-telegram.png
8.3 參考資料
- Incident DB:
SELECT * FROM incidents WHERE incident_id = '{INC-ID}' - Langfuse Trace:
https://langfuse.awoooi.internal/trace/{trace_id} - 相關 ADR:
{ADR-XXX} - 相關 Playbook:
{PB-ID}
使用說明
何時填寫: P0/P1 事件 24 小時內;P2 事件 72 小時內;P3 可選
自動填入欄位 [AUTO]: 由 report_generation_service.format_postmortem() 自動填入,人工只需補充 2.2、4.2、5、6
存放位置:
docs/postmortems/
YYYY-MM-DD-{alertname}-{incident_id}.md
assets/
{incident_id}-*.png
提交方式: git push gitea main → 自動部署
本模板由 Claude Sonnet 4.6 於 2026-04-14 台北時間建立