服務監控和 SLO API 可協助您管理服務,就像 Google 管理自己的服務一樣。服務監控的核心概念包括:
- 選取用來做為服務水準指標 (SLI) 的指標。
- 使用服務水準指標 (SLI) 為 SLI 值設定服務等級目標 (SLO)。
- 使用服務等級目標暗示的錯誤預算,降低服務風險。
本頁面將介紹這些概念,並說明設計 SLO 時應考量的幾項事項。本節的其他頁面會將這些概念付諸實踐。
術語
服務監控有一系列核心概念,以下將逐一介紹:
- 服務水準指標 (SLI):用於評估效能的量測指標。
- 服務等級目標 (SLO):所需效能的陳述式。
- 錯誤預算:從 1 - SLO 開始,隨著實際效能未達服務等級目標而減少。
服務水準指標
Cloud Monitoring 會收集用於評估服務基礎架構效能的相關指標。效能指標的例子包括:
- 要求計數:例如,每分鐘產生 2xx 或 5xx 回應的 HTTP 要求數。
- 回應延遲時間:例如 HTTP 2xx 回應的延遲時間。
系統會根據一組已知的服務類型自動識別效能指標:Cloud Service Mesh、Google Kubernetes Engine 上的 Istio 和 App Engine。您也可以自行定義服務類型,並選取相關效能指標。
效能指標是服務 SLI 的基礎。服務水準指標可說明服務的某些面向效能。對於 Cloud Service Mesh、Google Kubernetes Engine 上的 Istio 和 App Engine 上的服務,我們已知有哪些實用的 SLI。舉例來說,如果您的服務有要求計數或回應延遲時間指標,您可以透過建立比率,從這些指標衍生出標準服務水準指標 (SLI),如下所示:
- 可用性 SLI 是成功回應數與所有回應數的比率。
- 延遲 SLI 是低於延遲門檻的呼叫數與所有呼叫數的比率。
您也可以設定服務專屬的 SLI,用於評估「良好成效」的其他指標。這些 SLI 通常可分為兩類:
- 以要求為依據的 SLI,其中良好服務的評估方式是計算服務的原子單位,例如成功的 HTTP 要求數量。
- 以時間範圍為依據的 SLI:在這種情況下,系統會計算符合良好條件 (例如回應延遲低於特定門檻) 的時間範圍 (或時間窗格) 數量,以評估服務是否良好。
如需這些服務水準指標的詳細說明,請參閱「以要求和時間窗口為準的服務等級目標」。
如需為������服務���立 SLI 的範例,請參閱「運用指標建立 SLI」。
服務等級目標
服務水準目標是服務水準指標的目標值,是一段時間內的測量結果。服務會判斷可用的 SLI,而您則會根據 SLI 指定 SLO。服務等級目標定義了什麼是優質服務。您最多可為 Cloud Monitoring 中的每項服務建立 500 個服務等級目標。
服務等級目標由以下幾種資訊構成:
- SLI,用於測量服務的效能。
- 效能目標,指定所要的效能等級。
- 時間範圍,稱為合規期間,用於測量 SLI 達到效能目標的情況。
舉例來說,您可能會有以下需求:
- 在 30 天滾動期間,只有 5% 的要求延遲時間會超過 300 毫秒。
- 系統必須在每個星期內達到 99% 的可用性。
這類需求可提供服務等級目標的依據。如需設定良好的 SLO 的指引,請參閱「設計及使用 SLO」。
SLO 遵循率的變化也可能表示失敗情況的發生。監控這些變更可能會提供足夠的警告,讓您在問題擴大前解決問題。因此,警告政策通常用於監控服務等級目標的法規遵循。詳情請參閱「錯誤預算快訊」。
實用的服務等級目標會設定為低於 100%,因為服務等級目標會決定錯誤預算。SLO 通常以「九的次數」表示:99% (2 個九)、99.9% (3 個九) 等等。您可以設定的最高值為 99.9%,但可以使用任何適合您服務的較低值。
錯誤預算
服務等級目標會指定服務在評估時間範圍內必須達到的效能程度。法規遵循期間剩餘的部分即為錯誤預算。服務在評估時間範圍內可能會有執行失敗的狀況,而錯誤預算會將在達到服務水準目標的情況下允許的執行失敗程度量化。
錯誤預算可讓您追蹤在違反服務等級目標之前,在法規遵循期間的剩餘時間內,允許發生多少個不良個別事件 (例如要求)。您可以使用錯誤預算來管理維護工作,例如部署新版本。如果錯誤預算即將耗盡,那麼採取推送新更新等高風險行動,可能會導致違反 SLO。
法規遵循期間的錯誤預算為 (1 − 服務等級目標) × (法規遵循期間內符合資格的事件)。舉例來說,如果 SLO 是要求在 7 天滾動期間內有 85% 為良好,則錯誤預算會允許 15% 的這些要求為不良。舉例來說,如果您在過去一週內收到 60,480 個要求,則錯誤預算為該總數的 15%,也就是允許出現 9,072 個錯誤要求。如果您提供的錯誤數量超過這個數字,表示您的服務在 7 天的合規期間內違反 SLO。
設計及使用服務等級目標
怎樣才算是好的服務等級目標?在做出選擇時,有哪些因素需要考量?本節將概略說明設計及使用服務水準目標時的幾個一般概念。如要進一步瞭解這個主題,請參閱「網站可靠性工程:Google 如何運作實際運作系統」一書中服務等級目標章節。
服務等級目標定義您想要的服務目標效能。一般來說,SLO 應不超過必要或有意義的程���。如果使用������法分辨服務的 99% 可用性和 99.9% 可用性之間的差異,請使用較低的值做為 SLO。值越高,達成的成本就越高,對使用者而言並無差異。必須達到 100% 服務水準目標的服務沒有錯誤預算。設定這類 SLO 是不當做法。
SLO 通常比公開或合約承諾更嚴格。您希望服務等級目標比公開承諾更嚴格。如此一來,如果發生違反服務等級目標的情況,您就能在問題造成違約或違約前,先行察覺並修正問題。違反承諾或合約可能會對聲譽、財務或法律造成影響。SLO 是早期警示系統的一部分,可避免發生這種情況。
評估時間範圍
SLO 有兩種遵循期:
- 依日曆計算的期間 (從日期到日期)
- 滾動期間 (從 n 天前到現在,其中 n 的範圍為 1 到 30 天)
依日曆遵循期間
您可以將法規遵循期間設為日曆週期,例如一週或一個月。在已知的日曆邊界上重設法規遵循期間和錯誤預算。如要查看可能的值,請參閱 CalendarPeriod
。
使用日曆時間範圍時,您會在時間範圍結束時獲得效能分數。根據成效門檻評估,成效分數可讓您瞭解服務是否符合規定。使用日曆時間範圍時,您只會在每個符合規定期間獲得一次符合規定評分,即使您會在整個時間範圍內看到成效。不過,您可以透過期末分數取得易於閱讀的值,輕鬆比對客戶的帳單週期 (如果有外部付費客戶的話)。
就像日曆上的月份一樣,每個月的月度法規遵循期所涵蓋的天數各有不同。
以滾動週期為準的評估時間範圍
您也可以評估滾動式時間範圍內的合規性,例如評估過去 30 天。使用滾動式時間範圍時,上一個計算作業中最舊的資料會從目前的計算作業中移除,並由新資料取代。
使用滾動式時間範圍,您就能取得更多法規遵循評估資料,也就是取得過去 30 天的法規遵循評估資料,而非每月取得一份。服務會隨著服務水準目標狀態每日變更,在符合規定和不符合規定之間轉換,因為舊資料點會刪除,而新的資料點會新增。
以要求和時間為準的服務等級目標遵循狀況
判斷服務等級目標是否符合規定,取決於兩個因素:
- 如何判定符合性期間。這項判定結果會在「法規遵循期」中討論。
- 服務水準目標的類型。SLO 分為兩種類型:
- 以要求為準的服務等級目標
- 以 Windows 為準的 SLO
符合規定:在評估時間範圍內,良好事件與總事件的比率。服務等級目標的類型會決定「事件」的組成要素。
如果 SLO 為 99.9%,則只要符合率達到 99.9% 以上,就算達標。最大值為 100%。
以要求為準的服務等級目標
以要求為依據的 SLO 會根據 SLI 定義,定義為良好要求數與要求總數的比率。當該比率達到或超過評估時間範圍的目標時,就會達到以要求為準的服務水準目標。
舉例來說,請考慮這項以要求為準的服務水準目標:「至少 95% 的要求延遲時間低於 100 毫秒。」良好的要求是指回應時間低於 100 毫秒的要求,因此評估符合程度的標準是回應時間低於 100 毫秒的要求比例。如果這個比例至少為 0.95,則表示服務符合要求。
無論在整個評估時間範圍內,負載如何分配,您都可以透過以要求為依據的 SLO 瞭解服務在整個評估時間範圍內,有多少百分比的工作執行正確。
以 Windows 為準的 SLO
以時間範圍為依據的服務水準目標是以 SLI 為依據,定義為符合某些良好條件的測量時間間隔數量與時間間隔總數的比率。當該比率達到或超過評估時間範圍內的目標,就會達到以視窗為準的服務水準目標。
舉例來說,請考慮這個 SLO:「第 95 個百分位數延遲時間指標在至少 99% 的 10 分鐘時間範圍內低於 100 毫秒」。良好的測量期間是指 95% 的要求延遲時間低於 100 毫秒的 10 分鐘時間範圍。遵循程度的評估標準是這些良好期間的比例。如果這個分數至少為 0.99,則表示服務符合規定。
舉例來說,假設您將法規遵循期間設為 30 天的滾動資料,評估間隔設為 1 分鐘,而服務等級目標為 99%。為達到這個 SLO,您的服務必須在 43,200 分鐘 (30 天內的分鐘數的 99%) 中,有 42,768 個「正常」間隔。
以時間範圍為依據的服務等級目標可讓您瞭解客戶認為服務運作良好或不佳的時間百分比。這類 SLO 可隱藏「突發」行為的影響:如果每個呼叫都失敗,測量間隔就會對 SLO 計數,而測量間隔的錯誤數量也會增加。此外,呼叫次數較少的間隔,與活動量較高的評估間隔一樣,都會計入 SLO。
錯誤預算的軌跡
錯誤預算是 100% 良好服務與服務水準目標 (所需的良好服務等級) 之間的差異。兩者之間的差異就是您的彈性空間。
一般來說,錯誤預算一開始會設為最大值,並隨著時間流逝而下降,當錯誤預算降至 0 以下時,系統就會觸發服務等級目標違規事件。
不過,這類模式有幾個值得注意的例外狀況:
如果您在日曆評估期間評估以要求為依據的服務水準目標,��服務在評估期間增加了活動,那麼剩餘的錯誤預算實際上可能會增加。
怎麼可能?服務等級目標系統無法預先得知服務在每個評估時間範圍內的活動量,因此會推算出可能的值。這個值是從評估時間範圍開始起算,截至目前為止的通話次數與經過時間的比率,再乘以評估時間範圍的長度。
隨著活動率提高,該期間的預期流量也會增加,因此錯誤預算也會增加。
如果您是在滾動式評估時間範圍內評估服務水準目標,實際上您一律會在評估時間範圍結束時。系統會持續捨棄舊資料點,並持續新增新資料點,而非從頭開始。
如果評估期間內的違規率偏高,且目前時間 (取代評估期間) 符合規定,錯誤預算就會增加。在任何時間點,錯誤預算 ≥ 0 表示符合規範的滾動式服務水準目標時間窗,而錯誤預算 < 0 則表示不符合規範的滾動式服務水準目標時間窗。
監控錯誤預算
您可以建立快訊政策,在錯誤預算消耗速度過快時發出警告。詳情請參閱「錯誤預算快訊」一文。
後續步驟
- 微服務說明微服務,以及如何使用 Google Cloud 主控台設定、查看及管理微服務。
- 「資金消耗率的快訊」一文說明如何監控 SLI,以便在發生潛在問題時收到快訊。
- 「使用 SLO API」一文說明如何使用 SLO API (Cloud Monitoring API 的子集) 建立服務、服務水準目標和相關結構。