為何 SRE 重視監控與可觀測性#
分散式架構讓系統的故障面更廣,必須要有強大的可觀測性來捕捉問題:
- 主要由 SRE 與運維團隊建立
- 用於主動偵測 production 問題,並讓團隊能夠在使用者察覺前介入
- 屬於 SDLC 的最後階段,但其價值貫穿整個生命週期
沒有 100% 無錯的系統。即使測試再完整,外部因素仍可能造成上線後的故障。監控與可觀測性正是讓 SRE 能即時介入的雷達。
監控與可觀測性的差異#
- 監控(Monitoring):透過指標與紀錄關注系統狀態,分析資料並判斷影響。例如:CPU、記憶體、HTTP 500 比例、請求/回應比,看到異常就介入排查
- 可觀測性(Observability):是監控的進階,會自動化關注系統狀態並連結詳細日誌。能主動自我修復;無法處理的異常則彙整數據協助 SRE 找出根因
兩者互補,常用儀表板與日誌共同收集資料。
範例:線上旅遊預訂專案#
上線前兩個月,SRE 團隊:
- 評估監控工具並交給技術主管選型
- 為 CPU、記憶體、回應時間、上線時間建立儀表板,並做書籤化方便巡檢
- 在日誌工具上設置告警,並含詳細 stack trace 協助根因分析
- 部分告警設定為自動修復,例如服務當機時自動重啟
常見工具#
- Prometheus、Grafana
- Dynatrace、New Relic、Datadog
- VMware Aria Operations
- Microsoft Application Insights
多數工具同時支援基礎設施監控、應用監控與可觀測性,差別在於資料來源。例如 Prometheus + Grafana:以容器為輸入即作基礎設施監控;以應用程式日誌為輸入即作應用監控。
工具選型的最佳實踐#
- 先定義系統效能要量測的指標,再挑能拉那些資料的工具
- 設計整合方案,確認工具與架構的相容性
- 評估購買、整合、人力成本(含是否需要特殊技能)
- 選擇開源還是訂閱制
- 確認工具能隨應用一起擴充
- 沒有工具完美吻合需求,所以可客製化的能力非常重要
完整告警流程:從監控到事件管理#
延續線上旅遊預訂的案例,可看到一條典型的告警鏈:
- ELK 收集日誌、Prometheus + Grafana 做儀表板、Slack 為訊息工具、ServiceNow 做事件管理、PagerDuty 負責 on-call 通知
- SRE 與開發在程式碼裡植入指標,雙方共同決定閾值
- Grafana 與 Kibana 都把告警接到 Slack
- 任何指標越過閾值即推播訊息
範例情境#
- Kibana 設定「全服務 HTTP 500」告警
- 搜尋服務開始拋 500,Slack 收到訊息
- SRE 點擊訊息進入 Kibana,看到 stack trace
- 同時資料庫伺服器出現高記憶體告警;該基礎設施告警同步觸發 ServiceNow 事件
- ServiceNow 與 PagerDuty 串接,PagerDuty 發 SMS 給 on-call 工程師
- 完整 stack trace 顯示 HTTP 500 與資料庫高記憶體相關
- SRE 啟動新的資料庫實例分擔負載
- 一分鐘內告警解除
完整告警流程不只是單純的「通知」,而是把監控、根因關聯、事件管理與 on-call 串成一條閉環,是 SRE 帶給組織最具體的價值。

Figure 3.3: Alert stages in operations
進階方向:自動化、相關性、人工智慧#
- 自動化:把已知問題的解法直接放進工具
- 相關性(co-relation):把跨服務的多個告警自動關聯到同一根因
- AI/機器學習:讓系統從歷史資料學會自動修復未知問題
SRE 應該蒐集 production 的數據點,餵入 ML 演算法,逐步把「人工排錯」的能力轉化為「機器在使用者察覺前自動修補」的自動防線。