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