本節將回顧服務水準指標 (SLI) 的概念,定義優質或實用的 SLI,並提供所選服務的 SLI 實作範例。本頁面適用於想瞭解如何實作服務專屬 SLI 的使用者。
服務水準指標簡介
服務的可靠性是抽象概念,可靠性的含義取決於服務和使用者的需求。服務水準指標 (SLI) 是用來衡量可靠性的指標,可用於說明服務的可靠性,以及管理服務。
服務水準指標是透過時間範圍進行評估。視窗大小通常取決於您要用這些資訊做出的決策。舉例來說,您可以透過下列方式評估單一 SLI:
- 建立快訊政策時,過去一小時內的資料。
- 在幾週內,以便做出戰術決策。
- 在數個月內做出策略性決策。
建議您從 28 天開始評估 SLI;這個值可在策略和戰術用途之間取得良好平衡。
如需更多資訊,請參閱 《Site Reliability Engineering》(網站穩定性工程) 工作手冊的下列章節:
優質 SLI 的特性
我們認為「良好」的 SLI 是指符合下列條件的評估指標:
SLI 是使用者滿意度的良好代理評估指標。
良好的 SLI 與使用者滿意度高度相關。您可以使用 SLI 做為服務等級目標 (SLO) 的基礎,也就是在 SLI 上設定的閾值。您設定 SLO 的目的,是為了讓 SLI 在指定範圍內時,大多數使用者都能滿意。為了維持這種關係,SLI 必須是使用者滿意度的良好代理評估指標。
如果 SLI 是使用者滿意度的良好替代指標,那麼當有影響使用者滿意度的事件發生時,SLI 就會朝某個方向變動。同樣地,如果沒有任何事件影響使用者滿意度,SLI 就不會改變。
SLI 會隨著使用者滿意度以單調和線性的方式擴大。
良好的 SLI 會隨著使用者滿意度單調且線性地擴大。如果 SLI 改善,使用者滿意度也會提升。同樣地,如果 SLI 降低,使用者滿意度也會降低。良好 SLI 的價值提升幅度,會對應到使用者滿意度的提升幅度。
SLI 產生的測量值範圍為 0% 到 100%。
良好的 SLI 會產生 0% 到 100% 的效能評估範圍:這個範圍直覺易懂,也容易使用。舉例來說,SLI 效能為 100% 表示所有項目都正常運作,而 SLI 效能為 0% 表示所有項目都無法運作。
將 SLI 範圍設為 0% 到 100%,即可輕鬆明確地設定 SLI 服務水準目標:指派百分比目標 (例如 99.9%),SLI 效能必須達到或高於該目標,服務才能達到服務水準目標。
Promise
實作具有這些屬性的 SLI 的其中一種方法,是將 SLI 視為對使用者做出的承諾。只要計算您在一段時間內做出並遵守的承諾,就能得出介於 0% 到 100% 之間的數字。這類服務水準指標也能轉換為錯誤預算:針對特定服務水準目標,錯誤預算是指在特定時間範圍內,您無法達到服務水準目標的承諾數量。
承諾的例子包括:
- 傳回含有 HTTP
200
狀態碼的回應給客戶的要求。 - 在 100 毫秒內回應 gRPC 要求。
- 如要順利完成「建立虛擬機器」工作流程。
- 提供過去 10 分鐘內已重新整理的資料。
- 在排定的工作開始時間後一分鐘內開始執行。
SLI 規格和實作
SLI 規格是您想評估的內容。規格中並未提供如何評估的確切技術細節。舉例來說,以下是頁面載入時間的 SLI 規格:
- 載入時間在 100 毫秒內的首頁請求百分比。
評估 SLI 的方法有很多種,每種方法都有利弊。評估 SLI 的方式就是 SLI 實作方式。舉例來說,您可以將頁面載入規格實作為下列其中一種:
- 應用程式伺服器要求記錄檔的延遲時間欄位。
- 應用程式伺服器匯出的指標。
- 應用程式伺服器前端的負載平衡器匯出的指標。
- 黑箱監控服務,會向系統傳送人為要求,並測量接收有效回應所需的時間。
- 在客戶的瀏覽器中執行的應用程式專屬程式碼,可記錄時間資訊並傳回給收集服務。
每個選項都涉及下列特性之間的權衡:
- 精確度:準確捕捉使用者體驗的程度。
- 涵蓋範圍:評估使用者互動的比例。
- 成本:建構及維護解決方案所需的金錢和工程時間。
當 SLI 的評估方式更貼近使用者,使用者體驗的忠實度通常會有所提升。舉例來說,使用者或其他測量選項感知的延遲時間,比起使用使用者瀏覽器中程式碼的實作方式,會產生更準確的延遲時間測量結果。
但相對的,以瀏覽器為基礎的評估方式也會納入使用者連線至服務時所產生的任何延遲時間。舉例來說,如果透過公開網際網路使用服務,這項延遲時間可能會因地理位置或網路狀況而有顯著差異。
因此,以瀏覽器為基礎的訊號是使用者滿意度的良好替代指標。不過,這項信號可能不會提供可用於改善服務可靠性的實用資訊。
如要瞭解如何結合多種評估方式來平衡這項權衡,請參閱 The Telegraph 的這篇文章。
資料分組
如果服務為不同使用者執行不同類型的工作,或是執行特定工作時可能產生不同結果,您可能需要為服務設定多個 SLI。
不同工作
服務如果為不同類別的使用者執行多種工作,且每種工作對使用者滿意度的影響各異,就會從多個 SLI 中獲益。
舉例來說,如果您的服務同時處理讀取和寫入要求,執行這些工作的使用者可能會有不同的需求:
- 讀取要求必須快速。
- 寫入要求必須成功。
為了擷取這些不同的需求,您的 SLI 必須能夠區分這兩種情況。通常,SLI 指標會附有標籤,您可以使用標籤將值分類至多個值區中的其中一個。
一項任務有不同結果
服務執行單一類型的工作,但使用者期望的回應不同,因此可從多個 SLI 中受益。
舉例來說,如果您的服務只提供資料的讀取權限,使用者對延遲的容忍度可能會因要求結果而異:
- 使用者可能會容忍快速傳回的錯誤,因為他們可以立即重試要求。
- 使用者可能不太能接受需要花費很長時間才能完成的成功要求。
- 使用者最無法容忍的情況是:請求需要很長的時間才能傳回錯誤。
在這種情況下,延遲 SLI 必須能夠區分成功和失敗的請求。
後續步驟
如要瞭解如何使用Google Cloud 指標為 Google Cloud 服務導入 SLI,請參閱下列資源:
如要瞭解如何實作應用程式專屬的 SLI,請參閱下列文章:
如需建立回報自訂指標的服務 SLI 的範例,請參閱「設定服務等級目標:使用自訂指標進行觀察」。