旅程 1:事件從警報到結案
Arova Nexus — Phase 0 Product Definition | 2026-03-31

角色: 林建宏(IT 維運工程師,值班中)+ AI Agent + 陳志豪(IT 主管)
場景: 凌晨 2:15,Graylog 偵測到資料庫伺服器 error log 異常增加(slow query timeout),同時 LibreNMS 偵測到該伺服器 CPU 飆升
橫跨模組: Dashboard → Incident → AI Copilot → Knowledge → Integration → Analytics


背景

泰國廠的資料庫伺服器 DB-PROD-01 在凌晨 2:15 出現效能異常。Graylog 偵測到 slow query timeout error log 暴增,同時 LibreNMS 偵測到 CPU 使用率飆升至 98%。兩個監控系統分別發送 Webhook 告警到 Arova Nexus。

這是一個典型的多來源事件——同一個根因觸發了不同監控系統的警報,Arova 的 AI Agent 需要識別關聯並合併處理。


旅程步驟

Stage 1:警報接收與 AI 處理(自動,0-30 秒)

警報接收與 AI 處理流程
警報接收與 AI 處理流程

使用者情緒: 🟢 不需要人工介入(AI 自動處理到通知為止)

涉及模組: Incident Management(IN-001, IN-009)、AI Native(AIN-011, AIN-012)、Notification(IN-010)

Unhappy path:AI 合併錯了怎麼辦?

本次 5 筆警報合併為同一事件是正確的(共同根因 DB-PROD-01)。但若 AI 誤將「DB CPU 高」與不相關的「另一台 web server 記憶體滿」合併為同一事件,工程師可在 Stage 2 打開事件詳情頁後立刻修正:

  1. 切到「時間軸」tab → 點開 02:15 AI Correlation 合併 5 筆警報 展開合併管理內容 → 看到 N 筆原始警報與來源
  2. checkbox 選擇誤合併的那幾筆(例如 2 筆 web server 相關警報)
  3. 點「拆出為新事件」確認
  4. 系統立刻:
    • 建立新 Incident,把選中的 2 筆警報移入
    • 原事件保留剩下的 3 筆(DB 相關)
    • 雙方時間軸各記錄「拆分:2 筆 → INC-XXXX(林建宏)」
    • 新事件重跑 AI Triage(嚴重度 / 摘要 / 指派),不重跑 AI Correlation 以避免立刻又被合回
  5. 拆分動作寫入 AIN-021 隱式回饋為 negative 訊號,下次 AIN-025 月度調整時此類 pattern 的合併信心度門檻會被調升

若誤合併極端情況下把原事件全部警報都拆走,原事件保留但狀態設為「已結案(merged_out)」,保留 audit trail 供稽核回追。


Stage 2:工程師接手(2-5 分鐘)

林建宏手機收到 Email 通知 — 本事件為 SEV2,Email 內只有「前往 Nexus」深連結按鈕(無「✓ Acknowledge」— SEV1/2 強制進系統看 AI 摘要防盲 Ack · IN-037)。

深睡值班可 opt-in 多通道(IN-039): 林建宏是深眠體質,擔心 SEV2 Email 睡過頭漏接,事先在個人偏好勾選「值班期間升級為多通道通知(SEV2-4)」。本次他值班且 opt-in → 除 Email 外同時收到站內通知 + 第二通道(公司設定為 Teams push)→ 手機震動 + 桌機通知雙重喚醒。非值班夜晚即使 opt-in 也不會升級,避免週末被打擾。

他點連結 → URL 為 /incidents/INC-2026-0423 事件詳情頁深連結 → 手機瀏覽器未登入 → 跳登入頁帶 redirect_uri → 登入成功後自動回事件詳情頁省 2 個 click(原本要繞 Dashboard → 切事件佇列 → 點整列進詳情)。

事件詳情頁 INC-2026-0423
事件詳情頁 INC-2026-0423

林建宏進入事件詳情頁,標頭只顯示一個主動作 [確認](情境化按鈕 IN-034 — 未確認狀態下只該有「確認」),overflow menu 收「升級 / 誤報關閉」次要動作。

標頭下方 Next Action 橫幅(IN-035)顯示:⏭️ 點「確認」開始處理(已過 2 min / SLA 30 min) — 藍色背景表示時間充裕。

林建宏看 AI 摘要後點「確認」,狀態變為 Acknowledged。橫幅文案立刻變為:⏭️ 開始調查根因(Progress SLA 剩 28 min)。他手機上 hover 橫幅看到 tooltip(IN-035 新增):

當前 SLA 類型:Progress
起算時間:Ack 02:17
剩餘:28 min
逾時 2x 將觸發 Investigation Stall(reassign 建議)

凌晨掃一眼就知這是 Ack 後的 Progress SLA 不是 Response SLA,不用翻 spec 查。

使用者情緒: 🟡 凌晨被吵醒有點煩,但看到 AI 摘要和建議行動後鬆一口氣

涉及模組: Dashboard(DB-001, DB-008, DB-015)、Incident(IN-004, IN-005, IN-007, IN-011)

→ Wireframe: page-dashboardpage-detail(AI 分析摘要區 + 時間軸 Tab)

對照分支:SEV3/SEV4 Email 一鍵 Acknowledge(IN-037)

若本次警報嚴重度是 SEV3 或 SEV4(例:非核心 batch job 跑慢不影響使用者),Email 會另含「✓ Acknowledge」按鈕:

  1. 林建宏在床上不想開瀏覽器登入 → 直接點 Email 內「✓ Acknowledge」
  2. 手機瀏覽器開 acknowledgement 頁:「✓ 已確認 INC-XXX · [前往詳情頁] [關閉]」
  3. 林建宏確認沒事繼續睡 → 關閉分頁;隔天早上再進詳情頁調查
  4. 時間軸記錄:「02:17 林建宏 透過 Email 一鍵 Acknowledge · 裝置:mobile」

為什麼 SEV1/SEV2 不給 Email 一鍵 Ack? 本事件(SEV2)強制工程師進系統看 AI 摘要再 Ack — 防盲 Ack 重大事件。對照 AP-011 ⚠ pre-action 設計思路。

Ack Token 過期 fallback 與簽核不同: 若 2 小時內沒點 Email Ack 連結過期,fallback 頁顯示「請登入處理」— 不重發 Token。Ack 有時效性,重發會給工程師「還有時間」的錯覺。

Unhappy path:誤報誤判後再觸發

若林建宏瞥一眼覺得「又是 batch job 偶爾跑慢」,點「誤報關閉」,但 30 分鐘後同類警報再次觸發:

  1. 02:45 系統收到同 host (DB-PROD-01) / service (DB) / symptom (slow query) 警報
  2. 命中誤報 24 hr auto-reopen 觀察期 → 系統自動 reopen 原事件 INC-2026-0423(狀態回到 Acknowledged)
  3. 事件詳情頁顯示紅色標籤「誤報判定可疑:24 hr 內再觸發」
  4. 時間軸記錄(IN-030 統一格式 · § 3.6):auto-reopened · 誤報 24 hr 內再觸發(判定可疑) · host: DB-PROD-01 · symptom: slow query timeout
  5. 林建宏重新審視,這次認真調查發現真是 lock contention → 加 index 修復
  6. 若同一 DB-PROD-01 slow query pattern 7 天內累積誤報關閉 ≥ 3 次,Triage Agent 對該 pattern 的信心度 -0.2(下限 0.3),通知 IT Manager 檢查告警門檻是否設定過敏

Stage 3:調查與診斷(5-30 分鐘)

林建宏在 AI Copilot 側邊欄輸入:

「上次 DB-PROD-01 CPU high 是怎麼解決的?」

AI Copilot 搜尋歷史事件和知識庫,回應:

「INC-2025-1208:上次是 missing index 造成 full table scan。修復方式是加上 idx_transactions_date index。知識庫文章 KB-042 有完整的 DB slow query 排查 SOP。」

林建宏點開 KB-042,按照 SOP 操作:SSH 進 DB → 看 slow query log → 找到問題 query。

回事件詳情頁 處理紀錄 tab(IN-036 合併後的位置)→ 點 [+ 新增] → 💬 留言 → 寫「找到 slow query,是報表 batch job 的 query 沒有 index。」 → 留言僅在處理紀錄 tab 顯示(不寫 Timeline,避免淹沒系統事件)。

修完後再點 [+ 新增] → 🔧 修復嘗試2 欄快填📝 描述:新增 idx_report_date index + 🎯 結果:pending(系統自動抓 before 指標)→ 15 秒完成一筆(IN-025 MVP 最小表單)。

狀態從 Acknowledged → In Progress。

使用者情緒: 🟢 AI Copilot 幫他快速定位問題,不用自己翻舊紀錄

涉及模組: AI Copilot(AIC-002, AIC-003, AIC-006)、Knowledge(KB-008)、Incident(IN-006, IN-007)

Phase 2 預覽:Copilot 直接代下 Graylog query(graylog-api-deep-integration)

MVP 階段 Copilot 仍依賴工程師自己 SSH 查 slow query log。Phase 2 啟用 Graylog API 深度整合後,林建宏可直接在 Copilot 問:

「DB-PROD-01 過去 15 分鐘的 slow query timeout log 有哪些?」

Copilot 會自動:

  1. 依 Incident 情境感知帶入 source=DB-PROD-01 + 時間範圍 02:00-02:15
  2. 轉換為 Graylog 查詢參數(Stream 篩選 + keyword + time range)
  3. 呼叫 Graylog Search API 拉回結果(限制 150 筆)
  4. 產出 AI 摘要:「共 47 筆 slow query timeout,集中在 transactions table,最長 52 秒,疑似缺 index」
  5. 附 deep link 回 Graylog 介面繼續深度調查

效果: 工程師不用切換 SSH / Graylog 介面即可完成 log 回溯 — 進一步壓縮 MTTR。本 Journey 主線仍描繪 MVP 工作流。

→ Wireframe: page-detail + copilot-panel

Unhappy path:Ack 後無進展(Investigation Stall)

若林建宏 Ack 後被其他急事打斷(例:凌晨 2:30 電話響起另一起 SEV2),事件 INC-2026-0423 卡在「已確認」狀態:

  1. 02:45(Ack 後 30 分鐘達 Progress SLA 2x) → 系統自動發通知給林建宏 + 陳志豪(IT Manager)
  2. 事件詳情頁頂部顯示 reassign 建議卡:「此事件調查停滯超過 30 分鐘(SEV2 Progress SLA 2x),建議 reassign 至備援」
  3. 陳志豪手機收到通知 → 看到「建議 reassign 至備援工程師王志偉」→ 點「核准 reassign」
  4. 王志偉立刻收到通知 + 完整 context(AI 摘要、Copilot 對話紀錄、林建宏留言)→ 無縫接手
  5. 時間軸記錄:「02:45 Manager 陳志豪 核准 reassign:原 林建宏 → 新 王志偉,理由:Investigation Stall」

不同事件類型的調查差異

本次主線為效能事件,但不同類型的事件在調查階段會走不同路徑:

事件類型 調查方式 AI Copilot 角色 關鍵資料來源
效能事件(本次) 查 slow query log → 找問題 query 搜尋歷史案例 + 知識庫 SOP Graylog log + LibreNMS metric
資安事件 查設備清單 → 查 log 找惡意活動 查 CMDB 設備 + Graylog log CMDB + Graylog log
硬體故障 查 SNMP 狀態 + 硬體健康指標 查設備保固 + 歷史故障率 LibreNMS SNMP + CMDB

Stage 4:修復與驗證(10-30 分鐘)

修復與驗證流程
修復與驗證流程

使用者情緒: 🟢 三態主文(⏳ 觀察中 / ✓ 可安全結案)直接給答案,不用學百分比加權公式;倒數機制讓凌晨值班不用強迫自己清醒點按鈕

涉及模組: Incident(IN-006, IN-022, IN-023, IN-024)、Integration(Webhook recovery)、AI Native(AIN-011 Correlation Agent Recovery 延伸、AIN-024)

→ Wireframe: page-detail(Recovery 區塊:各來源狀態卡 + Readiness Score 進度條 + 倒數計時器)

L1 分支說明: 若 AI Agent 仍在 L1 信任等級,系統只顯示「可安全結案」靜態提示,不啟動倒數;林建宏需手動點「Resolve」。本 Journey 假設團隊已信任 L2。

Unhappy path:修復失敗(Fix Failed)

若林建宏加了 index 後 30 分鐘 CPU 仍 95% 沒下降:

  1. Readiness Score 長時間 < 50%(連續 30 分鐘)→ 系統顯示警示卡「Readiness Score 連續 30 分鐘 < 50%,修復可能未生效」
  2. 警示卡提供快捷按鈕:「轉派給王志偉」「通知 IT Manager 陳志豪」「標記最近修復嘗試(idx_report_date)為 failed」
  3. 林建宏切到「處理紀錄」tab 看到剛剛的 🔧 修復嘗試 entry(IN-036 合併後位置),把結果從 pending 改為 failed,時間軸同步記錄結果
  4. 重新調查,發現真正的問題是 batch job 有死鎖(不是 missing index)→ 點 [+ 新增] → 修復嘗試2 欄表單快填:📝 描述:kill batch job 並重設 DB 連線池 + 🎯 結果:pending(系統自動從 LibreNMS 抓 before CPU 指標 98% 顯示於 entry 展開區,不讓林建宏填)
  5. 新修復見效,Readiness Score 回升至 100%,進入倒數自動 Resolve

Unhappy path:Readiness Score 未達 80% 仍強制 Resolve

場景:部分指標(例:Graylog)一直沒進入靜默(因為 log agent down 未偵測),但工程師已從另管道(SSH 直接看 DB)確認恢復。

  1. Readiness Score = 65%(LibreNMS 100%、Graylog observing 50%,加權 75%,但因為 hysteresis 未通過)
  2. 林建宏直接點「Resolve」→ 系統彈出二次確認 modal:「部分來源仍不穩 — Graylog (observing: 靜默觀察中 8 min),確定 Resolve?」
  3. Modal 要求填寫「強制 Resolve 理由」(必填)→ 林建宏填「SSH 直接確認 DB 恢復,Graylog agent 疑似 down 另開 ticket 追蹤」
  4. 時間軸記錄:「強制 Resolve(Score=65%),理由:SSH 直接確認 DB 恢復,Graylog agent 疑似 down 另開 ticket 追蹤」
  5. 稽核日誌同步留存 — 事後 IT Manager 可從 Analytics 報表看到該工程師的「強制 Resolve 次數」避免濫用

不同事件類型的修復差異

事件類型 修復方式 Recovery 訊號 結案判定
效能事件(本次) 人工修復(加 index) LibreNMS recovery alert 自動通知 人工確認 Graylog log + LibreNMS metric 皆恢復
資安事件 AI 觸發自動化隔離(封 IP) 被動觀察流量歸零 確認威脅消除 + 隔離解除後無復發
硬體故障 failover 切換 + 報修換料 備機接手,服務恢復 新硬體上線 + 監控指標穩定

Stage 5:知識沉澱(Resolve 當下)與主管結案

觸發時機在 Resolve 而非 Close — 工程師剛修完問題時現場記憶最鮮明,寫出的知識文章品質最高(對應 PG-04「事件轉知識庫」設計)。

結案與知識沉澱流程
結案與知識沉澱流程

為什麼改非阻擋 toast? 凌晨值班工程師按「解決」剛要鬆口氣,被「是否加入 KB?」二選一 modal 強迫決策會打斷流程。改 toast 後:草稿自動產生(要寫的人有現成草稿)+ 不點任何按鈕也不影響(不寫的人不被打擾)+ 7 天保留期讓工程師日後可回頭補(不會立刻消失)。

為什麼 Resolve 觸發而不是 Close 觸發? Close 通常是隔天主管才操作,工程師現場記憶已經退;Resolve 是工程師剛修完的當下,此時記憶最鮮明、細節最完整。

使用者情緒: 🟢 不被 modal 打斷,AI 自動產草稿 + 事後可補完是最佳體驗

涉及模組: Incident(IN-006, IN-016, IN-017)、Knowledge(KB-001)、AI Native(AIN-024)

→ Wireframe: page-detail


旅程摘要

Stage 動作 模組 Wireframe 頁面
1 5 筆警報自動合併 + AI 分類指派 Incident + AI Native
2 工程師看 AI 摘要 + Acknowledge Dashboard + Incident page-dashboardpage-detail
3 AI Copilot 查歷史 + 知識庫定位根因 AI Copilot + Knowledge page-detail + copilot-panel
4 人工修復 + Recovery alert + AI 結案摘要 Incident + Integration page-detail
5 Resolve 當下工程師 draft KB + 主管隔天 Close Incident + Knowledge page-detail

總時間: 40 分鐘(從觸發到解決)
模組參與度: 6 個模組協作完成一次 Incident Response


全程數據

指標 使用 Arova 前 使用 Arova 後
警報到事件建立 15-30 分鐘(手動分類) < 30 秒(AI 自動合併 + 分類)
找到根因 30-120 分鐘(靠經驗翻紀錄) 5-15 分鐘(AI 建議 + 知識庫 SOP)
寫結案報告 15-30 分鐘(手動撰寫) 0 分鐘(AI 自動產生)
知識沉澱 通常跳過(太忙沒時間寫) 1 分鐘(AI draft + 人工修改)
MTTR 2-4 小時 30-60 分鐘