路徑 05課程 4 / 8

觀察服務與使用者

將指標、記錄檔和追蹤連結到服務目標。設計告警、資料邊界,以及偵測遙測缺漏的檢查。

實務11 分鐘已審查

發布者 我們如何撰寫

檢查理解程度匯出延遲增加,取樣追蹤顯示資料庫 spans 很慢。可以得出什麼結論?進行練習
匯出延遲增加,取樣追蹤顯示資料庫 spans 很慢。可以得出什麼結論?

學習目標

  • 選擇能回答特定維運問題的遙測資料。
  • 區分服務症狀與內部原因。
  • 保護遙測資料,並偵測缺少或過期的證據。

從問題開始

監控檢查已知條件。可觀察性協助調查系統行為,包括未預料的故障。更多儀表板,不會自動帶來更好的答案。

對虛構匯出服務,先問一個使用者問題:有權限的使用者,能否在約定時間內取得正確匯出?再選擇能回答這個問題、並協助解釋失敗的訊號。

OpenTelemetry 提供遙測的量測工具與標準,可將訊號送到相容後端。但仍需要儲存、查詢、存取控制、保留規則,以及依證據採取行動的人員。可觀察性入門。

連結不同形式的證據

指標衡量數量隨時間的變化。記錄檔記錄事件。追蹤(trace)在請求經過系統時,連結相關操作。Span 則代表一段追蹤中的單一操作。

維運問題證據範例要記住的限制
多少符合條件的匯出失敗?失敗次數與符合條件的請求數錯誤分母會產生誤導比例
某次匯出發生了什麼?含工作 ID、結果和版本的結構化記錄檔遺漏事件會留下缺口
時間花在哪裡?橫跨 API、佇列、工作程序和資料庫的追蹤取樣與中斷的上下文傳遞可能隱藏部分工作
症狀出現前改了什麼?部署與設定紀錄時間先後不能單獨證明原因

對非同步工作,在提交的工作與工作程序執行之間,保留安全的關聯。HTTP 202 回應可能表示工作已接受,不代表匯出已完成。

需要行動時才發出告警

設定 SLO 前,先定義 SLI 與分母。在範例中,計算符合條件、且在約定時間內正確完成的匯出。定義長時間執行與已放棄工作如何計入衡量。

錯誤預算描述 SLO 期間內容許的失敗程度。消耗率描述失敗消耗預算的速度。Google 指引使用多個時間視窗,平衡及時偵測與告警雜訊。依 SLO 告警。

條件需要及時操作時,通知值班人員。較不緊急的工作送入佇列。每項告警都需要負責人、影響說明、調查連結和應變指示。檢視反覆出現卻不需採取行動的告警。

不要為每項服務套用同一個通用門檻。使用者影響、流量、營業時間和應變資源,都會影響決定。

保護遙測管線

遙測可能包含個人資料、權杖、請求參數和機密文件。蒐集前,定義允許欄位。限制存取與保留時間。匯出到外部後端前,遮蔽機密值。敏感遙測資料。

不要用客戶電子郵件或唯一工作 ID 作為指標標籤。無上限的標籤會增加時間序列數量,也可能暴露識別資訊。指標使用受控維度;核准的關聯識別碼,則放在有存取控制的記錄檔或追蹤中。

也要衡量管線本身。檢查接收失敗、丟棄資料,以及最新觀察距今多久。平坦的錯誤圖表,可能代表沒有錯誤,也可能代表沒有收到遙測資料。清楚呈現這個差別。

調查具體故障

虛構服務對每個請求都回報 HTTP 202,但佇列等待時間從幾秒增加到 15 分鐘。工作程序記錄檔顯示重複的資料庫逾時。取樣追蹤顯示,工作程序大部分時間花在資料庫呼叫。

這些證據支持有方向的調查,但不能確定原因是查詢變更、連線耗盡,還是資料庫容量。使用除錯方法比較這些假設。

Taiga Monitoring 提供產品健康狀態檢視,包括可用性與瀏覽器體驗訊號。它補充基礎架構和應用程式可觀察性,不會取代那些系統。Monitoring。

進行練習

針對本課的虛構匯出,定義一個 SLI、一個可採取行動的告警、三個允許的遙測欄位,以及兩個禁止欄位。說明如何偵測遙測管線故障。

下載工作表(Markdown)
檢查理解程度 ↑

繼續學習

來源與延伸閱讀

Taiga 相關延伸閱讀

← 上一課: 持續找出並修補弱點