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