SRE監控的四個黃金指標到底長啥樣?

一、監控的黃金信號

掌握系統運行狀態,了解組件、服務的可靠性和穩定性,需要借助監控系統收集指標、可視化數據,并在異常出現時進行操作提醒。那么監控的都要關注哪些呢?我們來了解一下監控的指標,即系統中衡量的最重要因素。

1、延遲(Latency)

定義:服務處理某個請求所需要的時間。

重要性:延遲的增加可能意味著系統性能下降或存在瓶頸。對于微服務架構,快速失敗和快速反饋是推薦的做法,因此延遲的監控對于快速定位和解決問題至關重要。

監控方法:通常監控服務的響應時間,如tp99(99%響應時間)等指標,以了解服務的性能狀況。

延遲是對完成操作所需時間的度量。具體如何測量取決于組件,但一些常見的類似物是處理時間、響應時間或行程時間。測量延遲可讓您具體衡量完成特定任務或操作所需的時間。捕獲各種組件的延遲允許您構建系統不同性能特征的整體模型。這可以幫助您找到瓶頸,了解訪問哪些資源需要最多的時間,并注意到操作突然花費的時間比預期的時間長。SRE 一書的作者強調在計算延遲時區分成功和不成功請求的重要性,因為它們可能具有非常不同的配置文件,可能會扭曲服務的平均值。

流量(Traffic)

定義:當前系統的數據流入流出的數據統計,用來衡量服務的承載能力。

重要性:流量的大小直接反映了系統的負載情況,對于容量規劃和資源調配具有重要的參考價值。

監控方法:通過統計每秒鐘的請求量(TPS)或每秒查詢數(QPS)等指標來評估系統的流量。

流量衡量您的組件和系統的“繁忙程度”。這會捕獲您的服務的負載或需求,以便您了解您的系統當前正在執行多少工作。持續的高或低流量數字可能表明服務可能需要更多資源,或者問題阻止流量正確路由。但是,在大多數情況下,流量率對于幫助了解通過其他信號浮出水面的問題最有用。例如,如果延遲增加超過可接受的水平,能夠將該時間范圍與流量峰值相關聯是有幫助的。流量可用于了解可以處理的最大流量以及服務在不同負載階段如何降級或失敗。

錯誤(Errors)

定義:當前系統發生錯誤請求的數量,通常通過錯誤率來衡量。

重要性:錯誤率是評估系統穩定性和可靠性的重要指標。高錯誤率可能意味著系統存在嚴重問題或設計缺陷。

監控方法:除了簡單的錯誤計數外,還需要關注錯誤的具體類型、來源和原因,以便快速定位和解決問題。

跟蹤錯誤以了解組件的健康狀況以及它們未能正確響應請求的頻率非常重要。某些應用程序或服務會在干凈、現成的界面中暴露錯誤,但可能需要額外的工作來從其他程序收集數據。區分不同類型的錯誤可以更輕松地查明影響應用程序的問題的確切性質。這也為您提供了警報的靈活性。如果出現一種類型的錯誤,您可能需要立即收到警報,但對于另一種錯誤,只要比率低于可接受的閾值,您就不會擔心。

飽和度(Saturation)

定義:飽和度用來衡量當前服務的承載能力,通常使用資源的利用率和空閑率來表示。

重要性:飽和度反映了系統資源的利用情況,當資源利用率接近或達到飽和時,系統的性能可能會受到影響。

監控方法:通過監控系統的CPU、內存、磁盤、網絡等資源的利用率來評估系統的飽和度。當資源利用率達到或接近某個閾值時,可能需要采取擴容或優化措施。

飽和度衡量給定資源的使用量。百分比或分數經常與具有明確總容量的資源一起使用,但對于沒有明確定義的最大值的資源,可能需要更具創造性的測量。飽和度數據提供有關服務或應用程序有效運行所依賴的資源的信息。由于一個組件提供的服務可能會被另一個組件使用,因此飽和度是暴露底層系統容量問題的粘合指標之一。因此,一層中的飽和和延遲問題可能與底層中流量或錯誤測量的顯著增加相對應。四個黃金指標相互關聯、相互影響,共同構成了評估系統穩定性和性能的關鍵框架。通過對這些指標的監控和分析,可以及時發現和解決系統問題,確保系統的穩定、可靠和高效運行。

二、測量整個環境中的重要數據

使用四個黃金信號作為指導,您可以開始查看這些指標在整個系統層次結構中的表達方式。由于服務通常是通過在更基本的組件之上添加抽象層來構建的,因此應設計指標以在部署的每個級別添加洞察力。我們將研究常見分布式應用程序環境中存在的不同級別的復雜性:

單獨的服務器組件

應用程序和服務

服務器集合

環境依賴

端到端體驗

上面的順序擴展了每個后續層的抽象范圍和級別。

三、為單個服務器組件收集的指標

需要收集的基本級別指標是與您的系統所依賴的底層計算機相關的指標。盡管現代軟件開發在抽象物理組件和低級操作系統細節方面付出了相當大的努力,但每項服務都依賴于底層硬件和操作系統來完成其工作。因此,密切關注機器的基礎資源是了解系統健康狀況的第一步。

在考慮在機器級別收集哪些指標時,請考慮可用的單個資源。這些將包括服務器硬件的表示以及操作系統提供的核心抽象,如進程和文件描述符。從四個黃金信號的角度來看每個組成部分,某些信號可能很明顯,而其他信號可能更難以推理。Brendan Gregg 是一位有影響力的性能工程師,他概述了許多從 Linux 系統獲取核心指標的方法,以滿足他稱為性能分析(利用率、飽和度和錯誤)的 USE 方法的框架的需求。由于 USE 方法和四個黃金信號之間存在顯著重疊,我們可以使用他的一些建議作為起點,以確定從服務器組件收集哪些數據。要測量?CPU,以下測量可能是合適的:

延遲:CPU 調度程序的平均或最大延遲

流量:CPU 利用率

錯誤:特定于處理器的錯誤事件、故障 CPU

飽和度:運行隊列長度

對于內存,信號可能如下所示:

延遲:(無 - 很難找到一種好的衡量方法且不可操作)

流量:正在使用的內存量

錯誤:內存不足錯誤

飽和度:OOM 殺手事件,交換使用

對于存儲設備:

延遲:讀取和寫入的平均等待時間(await)

流量:讀寫 I/O 級別

錯誤:文件系統錯誤、/sys/devices 中的磁盤錯誤

飽和度:I/O 隊列深度

網絡信號可能如下所示:

延遲:網絡驅動程序隊列

流量:每秒傳入和傳出的字節或數據包

錯誤:網絡設備錯誤、丟包

飽和度:溢出、丟包、重傳段

除了物理資源的表示外,收集與強制執行限制的操作系統抽象相關的指標也是一個好主意。屬于此類別的一些示例是文件句柄和線程計數。這些不是物理資源,而是由操作系統設置的上限構造,以防止進程過度擴展自身。大多數都可以使用 ulimit 之類的命令進行調整和配置,但跟蹤這些資源使用的變化可以幫助您檢測軟件使用中潛在的有害變化。

四、為應用程序和服務收集的指標

向上移動一層,我們開始處理在服務器上運行的應用程序和服務。這些程序使用我們之前處理的單個服務器組件作為資源來完成工作。此級別的指標可幫助我們了解單主機應用程序和服務的運行狀況。我們已將分布式多主機服務分成一個單獨的部分,以闡明這些配置中最重要的因素。雖然上一節中的指標詳細說明了各個組件和操作系統的功能和性能,但此處的指標將告訴我們應用程序能夠執行我們要求它們的工作的能力。我們還想知道我們的應用程序依賴哪些資源以及它們如何管理這些約束。重要的是要記住,本節中的指標與我們上次能夠使用的通用方法有所不同。從現在開始,最重要的指標將非常依賴于您的應用程序的特征、配置以及您在機器上運行的工作負載。我們可以討論確定最重要指標的方法,但您的結果將取決于具體要求服務器執行的操作。對于為客戶服務的應用程序,四個黃金信號通常很容易挑選:

延遲:完成請求的時間

流量:每秒服務的請求數

誤:處理客戶端請求或訪問資源時發生的應用程序錯誤

飽和度:當前正在使用的資源的百分比或數量

您需要跟蹤的一些更重要的指標是與依賴項相關的指標。這些通常最好通過與單個組件相關的飽和度指標來表達。例如,應用程序內存利用率、可用連接、打開的文件句柄數量或活動的工作人員數量可以幫助您了解在物理服務器上下文中應用的配置的效果。這四個黃金信號主要是為分布式微服務設計的,因此它們采用客戶端-服務器架構。對于不使用客戶端-服務器架構的應用程序,相同的信號仍然很重要,但“流量”信號可能需要稍微重新考慮。這基本上是對繁忙度的衡量,因此找到一個能夠充分代表您的應用程序的指標將達到相同的目的。具體將取決于您的程序正在做什么,但一些通用的替代品可能是每秒處理的操作數或數據。

五、衡量服務器集合及其通信的指標

大多數服務,尤其是在生產環境中運行時,將跨越多個服務器實例以提高性能和可用性。這種增加的復雜程度增加了對監測很重要的額外表面積。分布式計算和冗余系統可以使您的系統更加靈活,但基于網絡的協調比單個主機內的通信更脆弱。強大的監控可以幫助減輕處理不太可靠的通信渠道的一些困難。除了網絡本身,對于分布式服務,服務器組的健康和性能比應用于任何單個主機的相同措施更重要。雖然服務在局限于單個主機時與其運行的計算機密切相關,但冗余多主機服務依賴于多臺主機的資源,同時與對任何一臺計算機的直接依賴保持分離。此級別的黃金信號與上一節中衡量服務健康狀況的信號非常相似。但是,他們將考慮到組成員之間所需的額外協調:

  • 延遲:池響應請求的時間,與對等方協調或同步的時間
  • 流量:池每秒處理的請求數
  • 錯誤:處理客戶端請求、訪問資源或到達對等點時發生的應用程序錯誤
  • 飽和度:當前使用的資源量、當前滿負荷運行的服務器數量、可用的服務器數量。

雖然這些與單主機服務的重要指標有明確的相似之處,但每個信號在分布時都會變得更加復雜。延遲成為一個更復雜的問題,因為處理可能需要多個主機之間的通信。流量不再是單個服務器能力的函數,而是組能力和用于分配工作的路由算法效率的總結。引入了與網絡連接或主機故障相關的其他錯誤模式。最后,飽和度擴展到包括主機可用的組合資源、連接每個主機的網絡鏈接以及正確協調對每臺計算機所需依賴項的訪問的能力

六、與外部依賴和部署環境相關的指標

要收集的一些最有價值的指標存在于您的應用程序或服務的邊界,不受您的直接控制。外部依賴項,包括與您的托管服務提供商和您的應用程序構建依賴的任何服務相關的依賴項。這些代表您無法直接管理的資源,但會損害您保證自己服務的能力。由于外部依賴關系代表關鍵資源,因此在完全中斷的情況下唯一可用的緩解策略之一是將操作切換到不同的提供者。這只是商品服務的可行策略,即便如此,也只有事先規劃并與提供商松散耦合。即使緩解困難,了解影響應用程序的外部事件也非常有價值。應用于外部依賴的黃金信號可能類似于:

  • 延遲:從服務接收響應或從提供者提供新資源所需的時間
  • 流量:推送到外部服務的工作量,向外部 API 發出的請求數
  • 錯誤:服務請求的錯誤率

飽和度:使用的帳戶限制資源量(實例、API 請求、可接受的成本等)

這些指標可以幫助您識別依賴關系的問題,提醒您即將發生的資源耗盡,并幫助控制費用。如果服務有替代方案,當指標表明出現問題時,該數據可用于決定是否將工作轉移到不同的提供者。對于靈活性較差的情況,這些指標至少可以用來提醒操作員對這種情況做出響應并實施任何可用的手動緩解選項。

七、跟蹤整體功能和端到端體驗的指標

最高級別的指標在用戶與之交互的最外層組件的上下文中跟蹤通過系統的請求。這可能是一個負載均衡器或其他路由機制,負責接收和協調對您的服務的請求。由于這是與您的系統的第一個接觸點,因此在此級別收集指標可提供整體用戶體驗的近似值。雖然前面描述的指標非常有用,但本節中的指標通常是設置警報時最重要的指標。為避免響應疲勞,警報(尤其是頁面)應保留用于對用戶體驗有明顯負面影響的場景。可以通過使用在其他級別收集的指標進行深入研究來調查這些指標中出現的問題。我們在這里尋找的信號類似于我們之前描述的單個服務的信號。主要區別在于我們在這里收集的數據的范圍和重要性:

延遲:完成用戶請求的時間

流量:每秒用戶請求數

錯誤:處理客戶端請求或訪問資源時發生的錯誤

  • 飽和度:當前正在使用的資源的百分比或數量

由于這些指標與用戶請求并行,因此超出這些指標可接受范圍的值可能表明對用戶有直接影響。不符合面向客戶或內部 SLA(服務級別協議)的延遲、指示嚴重高峰或下降的流量、錯誤率增加以及由于資源限制而無法處理請求都是相當簡單的推理在這個級別。假設指標準確,此處的值可以直接映射到您的可用性、性能和可靠性目標。

總 結

在本指南中,我們首先討論了最有助于發現和理解系統中具有影響力的變化的四個黃金信號。之后,我們使用信號作為鏡頭來評估在部署的不同層進行跟蹤的最重要因素。從上到下評估您的系統有助于確定運行可靠和高性能服務所需的關鍵組件和交互。這四個黃金信號可以成為構建指標以最好地指示系統健康狀況的一個很好的起點。但是,請記住,雖然黃金信號是一個很好的框架,但您必須了解特定于您的情況的其他指標。收集您認為最有可能警告問題或幫助您在出現問題時進行故障排除的任何數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35467.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35467.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35467.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【pytorch03】pytorch基本數據類型

問題:String類型在pytorch中如何表示? 很遺憾,pytorch不是完備的語言庫,而是面向數據計算的一個GPU加速庫,因此沒有內建對string的支持 我們會在做NLP的時候會遇到all string處理的問題,就比如說一句話&am…

華碩PRIME B450M-K主板開啟虛擬化

1.判斷電腦是否開啟了虛擬化 按下CtrlShiftESC打開任務管理器,切換到性能頁面,選擇查看CPU 如果在右下角看到虛擬化:已禁用,則沒有開啟虛擬化 2.進入BIOS 重啟或開機時,按下DEL或F2進入BIOS設置界面。 屏幕提示&am…

SAP系統中如何用事務碼圖形視圖尋找MD04增強開發實施點

在之前發布的文章中,介紹了善用事務碼的圖形視圖以觀察事務的執行流程以及如何在MD04中實施增強以改變生產訂單的顯示順序。本文結合兩者,介紹一下如何利用事務碼的圖形視圖找到增強開發的實施點。 在事務碼中輸入SE93,進入圖形視圖&#xf…

生命在于學習——Python人工智能原理(4.6)

在這里插一句話,我有兩個好兄弟的github項目,感興趣的可以去看一下,star一下,謝謝。 https://github.com/fliggyaa/fscanpoc https://github.com/R0A1NG/Botgate_bypass 四、Python的程序結構與函數 4.1 Python的分支結構 &…

如何將個人電腦做P2V備份到虛擬化平臺

背景:公司員工個人電腦綁定了商用軟件的license,現在員工離職,license又需要使用,電腦就一直被占用。 解決方法:利用VMware Vcenter Converter Standalone將此臺式電腦上載到公司虛擬化平臺上 具體做法,下…

sklearn-learn的安裝

官網:scikit-learn: machine learning in Python — scikit-learn 1.5.0 documentation 是 pip install scikit-learn 不是 pip install sklearn

Leetcode 700:二叉搜索樹中的搜索

給定二叉搜索樹(BST)的根節點 root 和一個整數值 val。 你需要在 BST 中找到節點值等于 val 的節點。 返回以該節點為根的子樹。 如果節點不存在,則返回 null 。 public TreeNode searchBST(TreeNode root, int val) {if(rootnull){return n…

.NET C# 樹遍歷、查詢、拷貝與可視化

.NET C# 樹遍歷、查詢、拷貝與可視化 目錄 .NET C# 樹遍歷、查詢、拷貝與可視化1 組件安裝1.1 NuGet包管理器安裝&#xff1a;1.2 控制臺安裝&#xff1a; 2 接口1.1 ITree\<TTreeNode\>1.2 ITree\<TKey, TTreeNode\>1.3 IObservableTree\<TTreeNode\>1.4 IO…

昇思25天學習打卡營第7天 | 模型訓練

內容介紹&#xff1a; 模型訓練一般分為四個步驟&#xff1a; 1. 構建數據集。 2. 定義神經網絡模型。 3. 定義超參、損失函數及優化器。 4. 輸入數據集進行訓練與評估。 具體內容&#xff1a; 1. 導包 import mindspore from mindspore import nn from mindspore.dataset…

手把手教你使用kimi創建流程圖【實踐篇】

學境思源&#xff0c;一鍵生成論文初稿&#xff1a; AcademicIdeas - 學境思源AI論文寫作 引言 在昨日的文章中&#xff0c;我們介紹了如何使用Kimi生成論文中的流程圖。今天&#xff0c;我們將更進一步&#xff0c;通過實踐案例來展示Kimi在生成流程圖方面的應用。這不僅將加…

【大數據技術原理與應用(概念、存儲、處理、分析與應用)】第1章-大數據概述習題與知識點回顧

文章目錄 單選題多選題知識點回顧幾次信息化浪潮主要解決什么問題&#xff1f;信息科技為大數據時代提供哪些技術支撐&#xff1f;數據產生方式有哪些變革&#xff1f;大數據的發展歷程大數據的四個特點&#xff08;4V&#xff09;大數據對思維方式的影響大數據有哪些關鍵技術&…

burpsuite 抓https的方法(CA證書操作)

https://cloud.tencent.com/developer/article/1391501

軟考《信息系統運行管理員》-1.2信息系統運維

1.2信息系統運維 傳統運維模式&#xff08;軟件&#xff09; 泛化&#xff1a;軟件交付后圍繞其所做的任何工作糾錯&#xff1a;軟件運行中錯誤的發現和改正適應&#xff1a;為適應環境做出的改變用戶支持&#xff1a;為軟件用戶提供的支持 新的不同視角下的運維 “管理”的…

Java 面試指南合集

線程篇 springBoot篇 待更新 黑夜無論怎樣悠長&#xff0c;白晝總會到來。 此文會一直更新哈 如果你希望成功&#xff0c;當以恒心為良友&#xff0c;以經驗為參謀&#xff0c;以當心為兄弟&#xff0c;以希望為哨兵。

拉普拉斯變換與卷積

前面描述 卷積&#xff0c;本文由卷積引入拉普拉斯變換。 拉普拉斯變換就是給傅里葉變換的 iωt 加了個實部&#xff0c;也可以反著理解&#xff0c;原函數乘以 e ? β t e^{-\beta t} e?βt 再做傅里葉變換&#xff0c;本質上都是傅里葉變換的擴展。 加入實部的拉普拉斯變…

【建設方案】智慧園區大數據云平臺建設方案(DOC原件)

大數據云平臺建設技術要點主要包括以下幾個方面&#xff1a; 云計算平臺選擇&#xff1a;選擇安全性高、效率性強、成本可控的云計算平臺&#xff0c;如阿里云、騰訊云等&#xff0c;確保大數據處理的基礎環境穩定可靠。 數據存儲與管理&#xff1a;利用Hadoop、HBase等分布式…

一年Java轉GO|19K|騰訊 CSIG 一二面經

面經哥只做互聯網社招面試經歷分享&#xff0c;關注我&#xff0c;每日推送精選面經&#xff0c;面試前&#xff0c;先找面經哥 背景 學歷&#xff1a;本科工作經驗&#xff1a;一年(不算實習)當前語言&#xff1a;Javabase&#xff1a;武漢部門\崗位&#xff1a;騰訊云? 一…

5000天后的世界:科技引領的未來之路

**你是否想過&#xff0c;5000天后的世界會是什么樣子&#xff1f;** 科技日新月異&#xff0c;改變著我們的生活方式&#xff0c;也引領著人類文明的進程。著名科技思想家凱文凱利在他的著作《5000天后的世界》中&#xff0c;對未來進行了大膽的預測。 **這本書中&#xff0c…

基于微信小程序的在線點餐系統【前后臺+附源碼+LW】

摘 要 隨著社會的發展&#xff0c;社會的各行各業都在利用信息化時代的優勢。計算機的優勢和普及使得各種信息系統的開發成為必需。 點餐小程序&#xff0c;主要的模塊包括實現管理員&#xff1b;管理員用戶&#xff0c;可以對整個系統進行基本的增刪改查&#xff0c;系統的日…

什么是<meta> 標簽

<meta> 標簽是 HTML 文檔頭部 (<head>) 中的一種元數據標簽&#xff0c;用于提供關于 HTML 文檔的信息。雖然它不會直接影響文檔的呈現&#xff0c;但它在搜索引擎優化 (SEO)、瀏覽器行為和文檔元信息方面起著重要作用。以下是一些常見的 <meta> 標簽及其用途…