為客戶提供高質(zhì)量的應(yīng)用程序或服務(wù)取決于幕后的高可用性基礎(chǔ)架構(gòu)。當您的服務(wù)不可用,速度慢或損壞時,客戶可能會感到沮喪,減少支出或完全停止使用您的服務(wù)。您的運營團隊需要快速地了解問題,以防止服務(wù)質(zhì)量降低并影響您的業(yè)務(wù)。
目前流行的現(xiàn)代分布式系統(tǒng)以基礎(chǔ)架構(gòu)和主機指標(如CPU利用率,APM指標,如響應(yīng)時間,數(shù)據(jù)庫指標等)的形式發(fā)布數(shù)百個指標。不斷監(jiān)視所有這些指標是不切實際的,因此我們建議在監(jiān)視分布式系統(tǒng)時選擇一個用作應(yīng)用程序關(guān)鍵性能指標的子集。
Google的網(wǎng)站可靠性工程師小組(SRE)定義了四個需要監(jiān)控的關(guān)鍵指標。他們稱之為“四個黃金信號”:延遲(Latency),流量(Traffic),錯誤(Errors)和飽和度(Saturation)。這些與微服務(wù)的RED度量密切相關(guān):速率,錯誤和持續(xù)時間,以及關(guān)注利用率,飽和度和錯誤的USE方法。這四個信號應(yīng)該是服務(wù)級別目標(SLO)的關(guān)鍵部分,因為它們對于提供高可用性的服務(wù)至關(guān)重要。
延遲 Latency
延遲是發(fā)送請求和接收響應(yīng)所需的時間。延遲通常從服務(wù)器端測量,但也可以從客戶端測量,以解決網(wǎng)絡(luò)速度的差異。您的運營團隊可以最大程度地控制服務(wù)器端延遲,但客戶端延遲將與您的客戶更相關(guān)。
您選擇的目標閾值可能因應(yīng)用程序類型而異。像API或廣告服務(wù)器這樣的自動化系統(tǒng)可能需要比手機上的人有更快的響應(yīng)時間。您還應(yīng)分別跟蹤成功和失敗請求的延遲,區(qū)分成功請求的延遲和失敗請求的延遲是很重要的。例如,由于與數(shù)據(jù)庫或其他關(guān)鍵后端的連接丟失而觸發(fā)的HTTP 500錯誤可能很快得到處理;但是,由于處理超時而引起的HTTP 500錯誤,可能導(dǎo)致誤導(dǎo)性判斷。另一方面,一個慢的錯誤甚至比一個快速的錯誤更糟糕!因此,跟蹤錯誤延遲是很重要的,而不是僅僅過濾掉錯誤。
流量 Traffic
流量是衡量流經(jīng)網(wǎng)絡(luò)的請求數(shù)量。這些可能是對Web服務(wù)器或API的HTTP請求,也可能是發(fā)送到處理隊列的消息。高峰流量的時間可能會對您的基礎(chǔ)架構(gòu)造成額外壓力,并可能將其推向極限,從而觸發(fā)下游效應(yīng)。這是一個關(guān)鍵信號,因為它可以幫助您區(qū)分容量問題和不正確的系統(tǒng)配置,即使在低流量時也可能導(dǎo)致問題。對于分布式系統(tǒng),它還可以幫助您提前規(guī)劃容量以滿足即將到來的需求。
錯誤 Errors
錯誤可以告訴您基礎(chǔ)結(jié)構(gòu)中的錯誤配置,應(yīng)用程序代碼中的錯誤或依賴項損壞等。例如,錯誤率的峰值可能表示數(shù)據(jù)庫或網(wǎng)絡(luò)中斷失敗。在代碼部署之后,它可以指示代碼中的錯誤,這些錯誤以某種方式在測試中存活或僅在生產(chǎn)環(huán)境中浮出水面。錯誤消息將為您提供有關(guān)確切問題的更多信息。錯誤還可以通過人為降低延遲或重復(fù)重試來影響其他指標,最終導(dǎo)致分布式系統(tǒng)飽和。
飽和度 Saturation
飽和度定義網(wǎng)絡(luò)和服務(wù)器資源的負載。每個資源都有一個限制,之后性能將降低或變得不可用。這適用于CPU利用率,內(nèi)存使用率,磁盤容量和每秒操作等資源。了解您的分布式系統(tǒng)設(shè)計和通過經(jīng)驗來判斷您的服務(wù)的哪些部分可能首先變得飽和。通常,這些指標是高級別指標,因此您可以在性能下降之前調(diào)整容量。
達到飽和度限制可能會以不同方式影響您的服務(wù)。例如,當CPU已滿時,可能會導(dǎo)致響應(yīng)延遲,填滿的存儲空間可能導(dǎo)致磁盤寫入失敗,并且網(wǎng)絡(luò)飽和可能導(dǎo)致數(shù)據(jù)包丟失。通過儀表板和監(jiān)控警報可以幫助您密切關(guān)注這些資源,并幫助您在容量達到飽和之前主動調(diào)整容量。
總結(jié)
這四個黃金信號是幫助提供良好客戶體驗的關(guān)鍵。可以幫助您在分布式系統(tǒng)監(jiān)控中輕松跟蹤每個信號。您可以使用它們報告服務(wù)級別目標,并通過向下探尋來快速解決問題以獲取更多詳細信息。您可以在問題影響客戶之前主動解決問題。