本節會回顧服務水準指標 (SLI) 的概念,定義實用或優良的 SLI,並提供所選服務的 SLI 實作範例。本頁面適用於想瞭解如何實作服務專屬 SLI 的使用者。
服務指標簡介
服務可靠性是抽象概念,可靠性的意義取決於服務和使用者需求。服務水準指標 (SLI) 是衡量可靠性的指標,可用於溝通服務可靠性,以及管理服務。
服務水準指標是在一段時間範圍內測量,視窗大小通常取決於資訊用途。舉例來說,您可以透過下列方式評估單一 SLI:
- 在最近一小時內建立快訊政策。
- 以週為單位,用於制定戰術決策。
- 以月為單位,做出策略性決策。
建議您從 28 天開始評估 SLI,這個值在策略和戰術用途之間取得良好平衡。
詳情請參閱《 Site Reliability Engineering Workbook》的下列章節:
優良 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% 則表示所有項目都無法運作。
服務水準指標的範圍為 0% 到 100%,因此設定服務水準目標時,只要指派百分比目標 (例如 99.9%),服務水準指標效能就必須達到或高於該目標,服務才能符合服務水準目標。
Promise
如要導入具有這些屬性的 SLI,其中一種方法是從對使用者做出的承諾著手。計算您在一段時間內做出並遵守的承諾,即可得出 0% 到 100% 的分數。這類服務水準指標也很適合轉換為錯誤預算:對於特定服務等級目標,錯誤預算就是您在一段時間內可以違反的承諾數量,同時仍符合服務等級目標。
承諾的例子包括:
- 對顧客的要求傳回 HTTP
200
狀態碼的回應。 - 在 100 毫秒內回應 gRPC 要求。
- 順利完成「建立虛擬機器」工作流程。
- 提供過去 10 分鐘內重新整理的資料。
- 在排定時間的一分鐘內開始執行排定的批次工作。
SLI 規格和實作方式
服務等級指標「規格」是您想測量的「內容」。規格不會包含您要如何評估的確切技術細節。舉例來說,以下是頁面載入時間的 SLI 規格:
- 在 100 毫秒內載入的首頁請求百分比。
評估 SLI 的方法有很多種,各有優缺點。 評估 SLI 的方式是 SLI 實作。舉例來說,您可以將網頁載入規格實作為下列其中一種:
- 應用程式伺服器要求記錄檔的延遲時間欄位。
- 應用程式伺服器匯出的指標。
- 應用程式伺服器前端的負載平衡器匯出的指標。
- 黑箱監控服務會將人為要求傳送至系統,並計算收到有效回應所需的時間。
- 在客戶瀏覽器中執行的應用程式專屬程式碼,可記錄時間資訊並傳回收集服務。
這些選項各有優缺點,需要權衡下列特性:
- 準確度:擷取使用者體驗的準確程度。
- 涵蓋範圍:評估使用者互動的比例。
- 成本:建構及維護解決方案所需的金額和工程時間。
通常,越接近使用者測量 SLI,使用者體驗的準確度就越高。舉例來說,在使用者瀏覽器中導入程式碼,比使用者或透過其他測量方式所感受到的延遲時間,更能準確測量延遲時間。
但缺點是,以瀏覽器為準的評估方式也會納入使用者連線至服務時造成的延遲。舉例來說,透過公用網際網路使用服務時,延遲時間可能會因地理位置或網路狀況而有顯著差異。
因此,以瀏覽器為準的信號可做為使用者滿意度的良好替代指標。不過,這項信號可能無法提供可做為行動依據的資訊,協助您提升服務的可靠性。
如要瞭解如何結合多項指標來平衡這項取捨,請參閱這篇 The Telegraph 的文章。
資料分組
如果服務為不同使用者執行不同類型的工作,或是執行特定工作時可能出現不同結果,您可能需要為服務設定多個 SLI。
不同工作
如果服務會為不同類別的使用者執行多種工作,且每種工作對使用者滿意度的影響不同,則適合使用多個 SLI。
舉例來說,如果您的服務同時處理讀取和寫入要求,執行這些工作的使用者可能會有不同需求:
- 讀取要求必須快速。
- 寫入要求必須成功。
為掌握這些不同需求,您的 SLI 必須能夠區分這兩種情況。通常,SLI 指標會包含標籤,可用於將值分類到其中一個儲存區。
一項工作,不同結果
如果服務只執行單一類型的工作,但使用者期望因回應而異,則適合使用多個 SLI。
舉例來說,如果您的服務只提供資料的讀取權限,使用者對延遲的容許程度可能會因要求結果而異:
- 使用者或許可以容忍快速傳回的錯誤,因為他們可以立即重試要求。
- 使用者可能無法接受要求成功但耗時過長。
- 使用者最無法接受最糟的情況:要求長時間後才傳回錯誤。
在這種情況下,延遲 SLI 必須能夠區分成功和失敗的要求。
後續步驟
如要瞭解如何使用指標為服務導入 SLI,請參閱下列文章: Google Cloud Google Cloud
如要瞭解如何導入應用程式專屬的 SLI,請參閱下列文章:
如要查看範例,瞭解如何為回報自訂指標的服務建立服務水準指標,請參閱「設定服務水準目標:使用自訂指標進行可觀測性」。