3分鐘瞭解黃金指標異常檢測

作者簡介

王博    百度高級架構師


從事有關AIOps智能運維領域的工作,通過算法解決IT運維領域的痛點問題。重點關注異常檢測、故障診斷方向的相關工作。

乾貨概覽

故障管理是運維工程師消耗時間最多的環節,因此成爲了AIOps算法首要解決的場景之一。

故障預防階段,我們在文章《被變更逼瘋的我,是如何成功自救的?中提到過百度分級發佈智能檢查算法。算法將在每一級變更的實例與未變更實例,以及歷史變更情況進行對比,如果發現指標變化有明顯異常,即判定本次變更可能存在風險,變更將被攔截並提交人工進行進一步審查。

故障發現階段我們利用業務監控系統對重要的業務指標進行異常檢測。當指標存在突變或者與歷史行爲不一致時,系統就會觸發報警給運維工程師。我們在文章《我們不一樣!告訴你百度是如何做智能流量異常檢測的》中詳細介紹了在流量指標上的故障發現方法。

故障止損環節我們在《單機房故障自愈》系列文章中詳細講述了百度單機房故障自愈的場景和算法。通過抽象、規範處理流程,我們將止損過程劃分爲統一的感知、決策、執行三個階段。感知階段監控分機房的KPI指標,在發現異常後觸發止損流程。決策階段根據各個機房的負載情況,在保證負載水位動態均衡的基礎上分步將故障機房的流量調度到其他健康機房。執行階段則根據決策階段產出的調度計劃利用流量調度平臺API執行流量調度。

故障診斷環節,《創造程序的“白衣天使”》系列文章提出了指標排查技術。該技術在故障時刻對故障產品線或者子系統下所有機器指標進行異常檢測,給每一臺機器打上一個異常標籤,然後根據異常標籤的情況對機器進行聚類分組,最後對分組進行排序,推薦異常程度最高的3到5個機器分組作爲故障根源所在的位置。

講到這裏,我們可以發現故障管理的各個環節都依賴於對時序指標數據的分析,而異常檢測算法是時序指標數據的關鍵分析技術之一,因此我們今天來聊一聊時序指標異常檢測技術。

各行各業的監控指標

不同的監控場景採集的時序指標不一樣,業務含義差異也很大,這些指標背後應該是一個異常檢測算法嗎?用戶經常在聽了異常檢測的案例之後堅持認爲自己的監控場景可能和其他人的不同,需要專門定製算法,真的是這樣嗎?下圖是我們在業務領域、數據庫領域、網絡領域以及工業領域見過的一些指標。這些指標中的絕大多數都可以用幾種標準的算法來檢測異常。

對業務運維團隊來說,主要關注的是業務指標的波動變化。像百度等互聯網公司,可能更多關注產品的訪問流量、訂單數量、QPS、響應時間或者KPI成功率指標的波動。對於金融行業的客戶,可能關注當前系統的交易量、交易成功率、交易響應率和交易延遲等指標的波動變化。如果這些業務指標出現了波動,系統可能發生了故障。例如,交易總量如果發生突然下跌,可能是當前系統的接入出現了一定問題。

對數據庫管理員來說,主要關注的是SQL平均讀行數、SQL語句的平均執行時間、鎖等待時間和鎖超時時間。這些指標反映數據庫當前的健康狀態,比如SQL語句的執行時間明顯上升,可能是數據庫的性能存在問題。

對網絡運維團隊來說,他們看到的關鍵指標又是另外一番樣子。網絡團隊關注更多的是網絡流量、網絡延遲、TCP連接數、TCP發送和接受包數量、TCP連接失敗數等。這些指標能夠反映物理機器或者設備在網絡層面的狀態。例如,當網絡流量突升超出網絡容量極限的時候,網絡延遲、TCP連接失敗數等指標都會有顯著的上升或下降。

除了我們常見的IT運維領域,工業生產的環節也關注了多種不同的指標,以確保生產安全和產品質量。比如輪胎企業,可能關心下線的輪胎尺寸,某個產品生產線的良品率、次品率、平均的生產下線時長,某個生產環節的溫度等。比如,當某個關鍵環節的溫度過低或者過高時,可能會導致生產出的輪胎硬度不符合質量要求。

黃金指標異常檢測

表面上,前面提到的多個場景中定義的關鍵指標有很大不同,但其實這些指標背後是有相似之處的。谷歌出版的《Site Reliability Engineering: How Google Runs Production Systems》提出IT運維場景四類黃金指標,流量類、錯誤(成功)率類、響應時間類和容量類。我們發現很多指標都可以歸入這四類,因此我們開發的算法工具包針對不同類型的黃金指標提供了專門的異常檢測算法,提高了異常檢測的效果和效率。

流量類指標代表流入系統的請求數量,請求數量的突升突降常常代表運維繫統的外部接入部分可能存在故障。比如,訪問流量就是外部進入百度業務系統的訪問請求數,訂單數是外部進入電商系統的訂單數量,交易量是外部進入銀行或者證券系統的交易數量,TCP發送包數是外部進入網絡設備的包數量。這類指標可以應用泊松分佈進行異常檢測,感興趣的讀者可以閱讀《我們不一樣!告訴你百度是如何做智能流量異常檢測的》這篇文章瞭解算法詳情。

錯誤(成功)率類代表了流出系統成功或者失敗的比例,錯誤率突升或者成功率突降代表系統自身的處理邏輯可能存在問題。例如百度的KPI就是請求的成功比例,交易成功率或者交易失敗率是交易成功或者失敗佔總體交易量的比例,良品、次品率代表了生產線下線產品質量合格或者不合格的比例,這類指標的異常檢測利用了二項式分佈,具體方法在《還記得概率課本中的二項分佈嗎?在我們的網絡判障中發揮了大作用!這篇文章中有詳細的介紹。

響應時間類代表流過系統處理請求的平均消耗時長,當消耗時間變大時代表系統的處理性能有所下降。比如響應時間就是請求從開始到返回在百度業務系統中所消耗的時間,交易延遲代表在銀行或者證券交易系統中所耗費的平均交易時間,數據庫中的SQL語句執行時間代表從開始執行SQL到SQL完成執行所需要的時間,網絡延遲代表數據包從發出到被接收端接收到在網絡系統中所消耗的延遲時間,生產時長代表從原料到產品下線的所需時長。

容量指標代表了系統當前能夠處理的請求數量情況,容量指標突變代表系統可能存在容量退化的風險。例如CPU、網絡使用率等指標,當這些指標飆高打滿,系統可能有較大的容量風險。

這樣,我們就把看似千差萬別的指標歸入了四個類別。在過去發佈的文章裏,我們介紹過流量類和錯誤(成功)率類的異常檢測算法,分別利用經典的泊松分佈、二項式分佈概率模型進行建模,然後計算當前取值發生的概率,概率很小時就認爲指標發生了異常。這種把指標的異常程度轉換到概率維度進行衡量的方法,同樣適用於響應時間類和容量指標類上,我們將在後續的文章中介紹這兩類指標的異常檢測算法。

總  結

故障管理是運維的重要場景之一,也是AIOps算法首先落地的場景。之前,我們發佈的多篇文章分別在不同的側面介紹了百度在故障管理環節的AIOps實踐,這些實踐都依賴了一個關鍵技術——時序指標異常檢測技術。本篇文章重點對百度黃金指標異常檢測技術進行了綜述性的介紹,我們將各行各業的指標分類到了四大類黃金指標上,並針對每個類型提供了專門的方法進行異常檢測。後續我們將繼續發佈我們在AIOps智能運維領域的新場景、新技術,大家敬請關注!

溫馨提示

如果你喜歡本文,請分享到朋友圈,想要獲得更多信息,請關注我們!

如果你有任何問題歡迎留言諮詢~

如果想試用我們的企業級運維平臺NoahEE,請聯繫郵箱:[email protected]

RECOMMEND

推薦閱讀

《前端加載優化實戰》

《微服務之監控初探》

《站點監控 | 外科醫生的實戰》

↓↓↓ 點擊"閱讀原文" 【瞭解更多精彩內容】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章