摘要:近十年監(jiān)控系統(tǒng)開發(fā)經(jīng)驗(yàn),具有構(gòu)建基于大數(shù)據(jù)平臺(tái)的海量高可用分布式監(jiān)控系統(tǒng)研發(fā)經(jīng)驗(yàn)。的哈勃多維監(jiān)控平臺(tái)在完成大數(shù)據(jù)架構(gòu)改造后,嘗試引入能力,多維根因分析是其中一試點(diǎn),用于摸索的應(yīng)用經(jīng)驗(yàn)。
前言作者丨吳樹生:騰訊高級(jí)工程師,負(fù)責(zé)SNG大數(shù)據(jù)監(jiān)控平臺(tái)建設(shè)。近十年監(jiān)控系統(tǒng)開發(fā)經(jīng)驗(yàn),具有構(gòu)建基于大數(shù)據(jù)平臺(tái)的海量高可用分布式監(jiān)控系統(tǒng)研發(fā)經(jīng)驗(yàn)。
導(dǎo)語:監(jiān)控?cái)?shù)據(jù)多維化后,帶來新的應(yīng)用場景。SNG的哈勃多維監(jiān)控平臺(tái)在完成大數(shù)據(jù)架構(gòu)改造后,嘗試引入AI能力,多維根因分析是其中一試點(diǎn),用于摸索AI的應(yīng)用經(jīng)驗(yàn)。本分分享探索過程和經(jīng)驗(yàn),希望可給后續(xù)AI應(yīng)用提供參考。
在2015年構(gòu)建多維監(jiān)控平臺(tái)時(shí)用kmeans做了異常點(diǎn)多維根因分析的嘗試,后因種種原因而擱置了深入研究。雖中止了兩年,但一直未忘當(dāng)初的夢(mèng)想。隨著掀起AI浪潮,平臺(tái)和技術(shù)也已成熟,監(jiān)控團(tuán)隊(duì)歷經(jīng)兩個(gè)月的重新調(diào)研和預(yù)研后取得突破,另辟蹊徑地找到異常點(diǎn)的多維根因分析方法,我們稱為MDRCA(Multi-Dimensional Root Cause Analysis)算法。
這篇文章為持續(xù)兩年多的夢(mèng)畫上一個(gè)句號(hào),它是監(jiān)控團(tuán)隊(duì)第一代成果總結(jié):介紹監(jiān)控多維數(shù)據(jù)特點(diǎn)、基于kmeans多維根因分析方法、第一代MDRCA算法和AI在監(jiān)控領(lǐng)域應(yīng)用經(jīng)驗(yàn)。筆者不敢貪功,僅將成果描述出來,如有偏差不全之處還望與讀者多交流修正。
監(jiān)控多維數(shù)據(jù)特點(diǎn)監(jiān)控的核心是對(duì)監(jiān)控對(duì)象的指標(biāo)采集、處理、檢測和分析。傳統(tǒng)監(jiān)控的對(duì)象是一個(gè)單一的實(shí)體,例如服務(wù)器、路由器、交換機(jī)等。這些單一對(duì)象通過指標(biāo)反映運(yùn)行狀態(tài),例如服務(wù)器的狀態(tài)指標(biāo)有CPU使用率、內(nèi)存使用大小、磁盤IO和網(wǎng)卡流量等。
傳統(tǒng)監(jiān)控系統(tǒng)通過定時(shí)任務(wù)采集這些監(jiān)控對(duì)象的指標(biāo)數(shù)據(jù),經(jīng)過校正后存儲(chǔ)起來用于展示和異常檢測。異常檢測通過判斷指標(biāo)是否偏離設(shè)置的閾值來標(biāo)識(shí)異常事件。
在傳統(tǒng)監(jiān)控之后,將監(jiān)控對(duì)象擴(kuò)展為一個(gè)虛擬的業(yè)務(wù)功能或業(yè)務(wù)模塊,這時(shí)的對(duì)象仍是單一的,可用一個(gè)唯一ID表達(dá)。對(duì)象的指標(biāo)也相應(yīng)的轉(zhuǎn)變?yōu)榉从硺I(yè)務(wù)功能狀態(tài)的指標(biāo),例如接口調(diào)用次數(shù)、http返回200次數(shù)、http返回500次數(shù)等。
這些指標(biāo)數(shù)據(jù)通常需要在應(yīng)用程序埋點(diǎn)上報(bào)。數(shù)據(jù)處理、存儲(chǔ)和異常檢測與傳統(tǒng)監(jiān)控一致。
隨著業(yè)務(wù)擴(kuò)展,業(yè)務(wù)模塊間的關(guān)系愈加復(fù)雜。通過單一對(duì)象的指標(biāo)反映的狀態(tài)已不能滿足業(yè)務(wù)監(jiān)控需求。業(yè)務(wù)異常往往體現(xiàn)在多個(gè)對(duì)象的指標(biāo)異常,用戶收到告警后需要在大量指標(biāo)數(shù)據(jù)中剝絲抽繭般地分析異常原因。
這個(gè)狀況伴生了運(yùn)維痛點(diǎn):一是告警量大;二是分析耗時(shí)長。
解決這一問題的關(guān)鍵是建立對(duì)象和指標(biāo)的關(guān)聯(lián)模型。通過相關(guān)性收斂對(duì)象和指標(biāo),減少告警量。并通過關(guān)聯(lián)模型中的調(diào)用關(guān)系模型和層次關(guān)系模型快速找到問題根因。對(duì)傳統(tǒng)監(jiān)控中的對(duì)象翻譯為多維度屬性后對(duì)指標(biāo)數(shù)據(jù)進(jìn)行處理、存儲(chǔ)和異常檢測,形成多維監(jiān)控。對(duì)象的維度屬性將對(duì)象分類,構(gòu)建了對(duì)象的關(guān)聯(lián)模型。
這樣對(duì)單一對(duì)象的異常檢測可提煉為對(duì)某一維度屬性的異常檢測,從而減少檢測對(duì)象。在發(fā)生異常后根據(jù)維度下鉆分析,有規(guī)則地提供分析路徑,避免盲目分析,減少分析耗時(shí)。
用A、B和C這三個(gè)業(yè)務(wù)模塊來說明上面介紹的多維監(jiān)控形成過程:
這三個(gè)模塊的調(diào)用關(guān)系為A調(diào)用B,B調(diào)用C。C根據(jù)機(jī)房劃分為C1和C2兩個(gè)子模塊。A模塊下有2臺(tái)機(jī)器(10.0.1.1和10.0.1.2),B下有3臺(tái)機(jī)器(10.0.2.1、10.0.2.2和10.0.2.3),C1下有1臺(tái)機(jī)器(10.0.3.11),C2下有2臺(tái)機(jī)器(10.0.3.21和10.0.3.22)。
假設(shè)C模塊下的機(jī)器負(fù)載已飽和,也就是說如果其中有一臺(tái)機(jī)器異常,則提供有損服務(wù),影響B(tài)和A的成功率。如果C2模塊下的10.0.3.21機(jī)器異常,則會(huì)觸發(fā)10.0.3.21機(jī)器告警及A和B下的5臺(tái)機(jī)器告警,總共有6個(gè)對(duì)象產(chǎn)生告警。
在實(shí)際運(yùn)營中,往往有多個(gè)指標(biāo)反映一個(gè)功能狀態(tài),進(jìn)一步增加告警量。
為解決例子描述的告警量大和分析耗時(shí)痛點(diǎn),將監(jiān)控對(duì)象的機(jī)器翻譯成業(yè)務(wù)模塊,從而形成一個(gè)業(yè)務(wù)模塊和機(jī)器的多維度數(shù)據(jù)。異常檢測也由機(jī)器維度更改為業(yè)務(wù)模塊維度,減少檢測對(duì)象的數(shù)量。在分析異常時(shí),沿著業(yè)務(wù)模塊到機(jī)器的層級(jí)關(guān)系可查找出異常點(diǎn)。
還有一種多維數(shù)據(jù)的場景是面向APP應(yīng)用。APP的請(qǐng)求自身帶有版本、機(jī)型、運(yùn)營商和地域這些維度信息。發(fā)現(xiàn)指標(biāo)異常后需要判斷是哪個(gè)維度特性造成的異常或異常影響的維度范圍。
監(jiān)控多維數(shù)據(jù)由三部分組成:
時(shí)間維度,監(jiān)控系統(tǒng)時(shí)間粒度通常取1分鐘粒度;
業(yè)務(wù)特性維度,后端服務(wù)的維度通常為業(yè)務(wù)模塊,APP監(jiān)控的維度通常為版本、機(jī)型、運(yùn)營商和地域;
指標(biāo),如成功率,耗時(shí)和延時(shí)分段統(tǒng)計(jì)等。
下表是一個(gè)SNG移動(dòng)監(jiān)控的多維數(shù)據(jù)樣例:
基于Kmeans分類的多維根因分析方法在建設(shè)多維監(jiān)控平臺(tái)初期,為解決人工逐個(gè)觀察各維度的異常數(shù)據(jù)帶來的效率問題,使用kmeans對(duì)成功率指標(biāo)分類。推薦出分類后的異常維度后再做二次分析。
下圖是2014年12月手Q接入層SSO模塊的成功率分鐘曲線。當(dāng)天中午13:00附近接入層成功率由接近99.9%下降為99.5%。
發(fā)生異常后,通過人工分析的步驟為分別查看某一維度的成功率,找出成功率低并且總量大的維度條件。選定最可疑的維度條件再重復(fù)剛剛介紹的分析過程。直到遍歷完所有維度,找出成功率下降的維度組合。
例如:模塊維度有A、B和C三個(gè)模塊,A模塊下有命令字(a1,a2和a3),B模塊下有命令字(b1,b2),C模塊下有命令字(c1,c2和c3)。
在異常點(diǎn)的指標(biāo)統(tǒng)計(jì)如下表:
按模塊觀察,模塊A的成功率為99.75%,總數(shù)為300;模塊B的成功率為95.83%,總數(shù)為150;模塊C的成功率為99.4%,總數(shù)為300。
經(jīng)過比較,模塊B成功率顯著低于模塊A和模塊C,并且接近95%。模塊B成為可以維度條件。
接著觀察模塊B條件下的命令字,其中命令字b1的成功率顯著低于異常點(diǎn)平均成功率95%。
分析完成后確定模塊B的命令字b1造成成功率下降。
使用kmeans對(duì)成功率分類模擬人工分類操作。對(duì)各維度的成功率進(jìn)行分類后可以得到顯著差異的維度條件。
如對(duì)上面例子的各模塊成功率做kmeans分類,可以獲得成功率有顯著差異的模塊B和命令字b1。稱具有顯著差異的維度集合為反向分析。反向分析結(jié)果在二次分析時(shí)需要特別關(guān)注。
下面兩張圖是對(duì)手 Q 接入層異常模塊分析的反向分析結(jié)果, 結(jié)合接入層的響應(yīng)量判斷出異常模塊的RedTouchSvc,異常命令字為RedTouchSvc.ClientReport。
MDRCA(Multi-Dimensional Root Cause Analysis)算法基于Kmeans對(duì)成功率分析方法在一定程度上提升了問題分析效率,但存在兩個(gè)問題:
只能應(yīng)用于成功率的指標(biāo)分析,對(duì)于累積量的指標(biāo)如請(qǐng)求量則失去作用;
未引入成功率總量的權(quán)重,分類后推薦出的異常維度條件需要二次人工分析。
中斷近兩年,并在建設(shè)完成多維監(jiān)控平后,監(jiān)控團(tuán)隊(duì)重新投入人力調(diào)研實(shí)現(xiàn)多維根因分析方法。在監(jiān)控領(lǐng)域AI剛剛起步,可參考的論文和經(jīng)驗(yàn)較少。我們?cè)谧吡艘欢螐澛泛螅梃b和改進(jìn)廣告推薦中的異常分析算法,實(shí)現(xiàn)MDRCA算法,解決Kmeans成功率分類方法的兩個(gè)問題。
對(duì)于指標(biāo)我們分兩類:單一變量指標(biāo)和復(fù)合指標(biāo)。
單一變量指標(biāo):請(qǐng)求量、響應(yīng)量等不依賴其他變量獨(dú)立統(tǒng)計(jì)的指標(biāo)。
復(fù)合指標(biāo):成功率這類需要通過兩個(gè)或多個(gè)變量做除法計(jì)算的指標(biāo)。
這里我們用單一變量指標(biāo)請(qǐng)求量來說明MDRCA算法的原理。
假設(shè)一個(gè)業(yè)務(wù)的請(qǐng)求量X(m)的某一維度下有m個(gè)值,分解到各維度的請(qǐng)求量為(x1,x2,…,xn,n=m)。X(m)可用公式表示:
在異常時(shí)刻t 觀察到異常的請(qǐng)求量為A(m)。A(m) 由各維度在t 時(shí)刻的值組成。A(m) 可用公式表示:
也就是說觀察到的總體請(qǐng)求量異常由各維度的異常分量組成。
根據(jù)歷史觀察值獲得時(shí)刻 t 的請(qǐng)求量預(yù)測值F(m)。F(m)由各維度的預(yù)測值組成。F(m) 可用公式表示:
生成預(yù)測值算法有多種,一種方法是取前一天對(duì)于時(shí)刻 t 的值。在本文的 MDRCA 算法中,預(yù)測值取離前7天的 t-20,t 時(shí)刻的平均值最近的一天的 t 時(shí)刻作為參考點(diǎn)。
在MDRCA算法中定義一個(gè)值 Explanatory Power,簡稱EP來衡量觀察維度 i 下維度值 j 對(duì)異常的占比,或稱貢獻(xiàn)度。EP的計(jì)算公式為:
例如,異常時(shí)刻t的請(qǐng)求量為1000,根據(jù)歷史數(shù)據(jù)預(yù)測時(shí)刻t的請(qǐng)求量為1500。維度 i 下的維度值 j 在異常時(shí)刻 t 的請(qǐng)求量值為200,根據(jù)j的歷史數(shù)據(jù)預(yù)測時(shí)刻 t 下 j 的請(qǐng)求量值應(yīng)為500。根據(jù)公式計(jì)算可知j的EP值為(200-500)/(1000-1500)=0.6。
當(dāng)維度下有值的變化方向與異常值變化方向相反時(shí),EP取值為負(fù)數(shù)。這時(shí)其他維度值的EP取值也可能大于1。但是觀察維度下所有維度值的EP和為1。
MDRCA算法中定義另一個(gè)值Surprise來衡量觀察維度 i 下維度值 j 的變化差異。為計(jì)算JSD,先計(jì)算兩個(gè)變量 p 和 q 。其中 p 為維度值 j 在預(yù)測值中的占比,q 為維度值 j 在異常值中的占比。p 和 q 的計(jì)算公式如下:
和 q 的取值為(0,1)。獲得 p 和 q 后,維度值 j 的變化差異計(jì)算公式為:
至此,我們獲得衡量維度值 j 的異常貢獻(xiàn)值 EP 和變化差異值 Surprise。對(duì)這兩個(gè)值用四象限方法解釋如下:
從四象限中可知,維度中 EP 和 Surprise 分類大的維度值可作為候選維度。對(duì) EP 和Surprise 分類可采用前面介紹的 kmeans 分類方法。
選出每個(gè)維度下的候選維度集合后,計(jì)算各集合的 Surprise 和用于衡量各維度的異常變化差異。差異越大的維度越有可能成為異常的主要影響因素。
在這還用了另一個(gè)技巧: 異常的主要影響因素往往是少量維度值的集合。所以取后續(xù)集合的 Surprise均值大的維度作為優(yōu)先選擇的條件。選出維度后,在選擇維度中貢獻(xiàn)大的維度值作為優(yōu)先條件。
MDRCA算法的多維根因分析方法如下:
以上為對(duì)單一變量的MDRCA算法介紹。對(duì)成功率這類復(fù)合指標(biāo)EP計(jì)算為求分子分母兩個(gè)變量的偏導(dǎo),Surprise的計(jì)算方法為求分子和分母變量的Surprise值之和。
AI應(yīng)用經(jīng)驗(yàn)為借助AI的東風(fēng)解決監(jiān)控領(lǐng)域的痛點(diǎn),同時(shí)摸索AI在監(jiān)控的實(shí)踐經(jīng)驗(yàn)。我們拿智能多維分析探路。中間經(jīng)歷曲折踩坑,反思當(dāng)中的過程有幾點(diǎn)經(jīng)驗(yàn)值得在后續(xù)開發(fā)過程中借鑒。
其一,梳理AI應(yīng)用開發(fā)過程的角色。新近的互聯(lián)網(wǎng)浪潮AI,必然吸引不少新老程序員踏浪,如何才能在浪中不翻船呢?
經(jīng)過摸索后,我們認(rèn)為在AI應(yīng)用開發(fā)中需要以下四類角色:
領(lǐng)域?qū)<?/strong>
深入了解業(yè)務(wù)的領(lǐng)域?qū)<夷馨盐兆≡摌I(yè)務(wù)的核心痛點(diǎn),結(jié)合AI找出著力點(diǎn)和給AI專家提供業(yè)務(wù)領(lǐng)域信息;
AI專家
這個(gè)角色知識(shí)淵博、深入掌握算法和實(shí)踐。理解領(lǐng)域?qū)<姨峁┑耐袋c(diǎn)信息后,預(yù)研并提供算法指導(dǎo)和支撐。
算法工程化專家
這個(gè)角色拿到AI專家提供的算法后做工程化實(shí)現(xiàn)和優(yōu)化提升算法性能。
應(yīng)用開發(fā)專家
這類角色是將AI成果上線應(yīng)用,提升易用性和用戶體驗(yàn),同時(shí)在應(yīng)用中預(yù)設(shè)收集用戶操作和反饋信息的渠道。
其二,先調(diào)研、讀論文和參考業(yè)界做法的研究步驟。讀論文很重要。領(lǐng)域?qū)<沂崂沓龊诵耐袋c(diǎn),業(yè)界也存在類似痛點(diǎn),并且有相關(guān)研究。不妨先參考業(yè)界做法,讀懂和理解相關(guān)論文和應(yīng)用場景后再做改進(jìn)。
其三,溝通交流。在監(jiān)控領(lǐng)域AI應(yīng)用剛剛起步,大家還在摸著石頭過河,可參考的成功案例較少。所謂三個(gè)臭皮匠抵過一個(gè)諸葛亮,聚在一起學(xué)習(xí)交流,有利于糾正錯(cuò)誤認(rèn)識(shí),明晰算法應(yīng)用場景和擴(kuò)展思路。
結(jié)語最后,再次感謝SNG監(jiān)控團(tuán)隊(duì)小伙伴們的努力,摸索出了以上經(jīng)驗(yàn)。也歡迎大家多交流指正。團(tuán)隊(duì)也在持續(xù)探索更優(yōu)的多維監(jiān)控異常分析算法,后續(xù)也將持續(xù)推出系列文章。大家敬請(qǐng)關(guān)注。
參考資料: 1 Adtributor: Revenue Debugging in Advertising Systems Ranjita
Bhagwan,Rahul Kumar,Ramachandran Ramjee, George Varghese,Surjyakanta
Mohapatra, Hemanth Manoharan, and Piyush Shah, Microsoft, 2014
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/19661.html
摘要:近十年監(jiān)控系統(tǒng)開發(fā)經(jīng)驗(yàn),具有構(gòu)建基于大數(shù)據(jù)平臺(tái)的海量高可用分布式監(jiān)控系統(tǒng)研發(fā)經(jīng)驗(yàn)。監(jiān)控多維數(shù)據(jù)特點(diǎn)監(jiān)控的核心是對(duì)監(jiān)控對(duì)象的指標(biāo)采集處理檢測和分析。通過單一對(duì)象的指標(biāo)反映的狀態(tài)已不能滿足業(yè)務(wù)監(jiān)控需求。 吳樹生:騰訊高級(jí)工程師,負(fù)責(zé)SNG大數(shù)據(jù)監(jiān)控平臺(tái)建設(shè)。近十年監(jiān)控系統(tǒng)開發(fā)經(jīng)驗(yàn),具有構(gòu)建基于大數(shù)據(jù)平臺(tái)的海量高可用分布式監(jiān)控系統(tǒng)研發(fā)經(jīng)驗(yàn)。前言在2015年構(gòu)建多維監(jiān)控平臺(tái)時(shí)用kmeans做了異常點(diǎn)...
摘要:從那個(gè)時(shí)候開始,我就開始用一些機(jī)器學(xué)習(xí)人工智能的技術(shù)來解決的運(yùn)維問題了,有不少智能運(yùn)維的嘗試,并發(fā)表了不少先關(guān)論文和專利。而處理海量高速多樣的數(shù)據(jù)并產(chǎn)生高價(jià)值,正是機(jī)器學(xué)習(xí)的專長。也就是說,采用機(jī)器學(xué)習(xí)技術(shù)是運(yùn)維的一個(gè)必然的走向。 大家上午好,非常榮幸,能有這個(gè)機(jī)會(huì),跟這么多的運(yùn)維人一起交流智能運(yùn)維。最近這兩年運(yùn)維里面有一個(gè)很火的一個(gè)詞叫做AIOps(智能運(yùn)維)。我本人是老運(yùn)維了,在2000...
摘要:本文將介紹美團(tuán)點(diǎn)評(píng)整個(gè)數(shù)據(jù)庫平臺(tái)的演進(jìn)歷史,以及我們當(dāng)前的情況和面臨的一些挑戰(zhàn),最后分享一下我們從自動(dòng)化到智能化運(yùn)維過渡時(shí),所進(jìn)行的思考探索與實(shí)踐。 從自動(dòng)化到智能化運(yùn)維過渡時(shí),美團(tuán)DBA團(tuán)隊(duì)進(jìn)行了哪些思考、探索與實(shí)踐?本文根據(jù)趙應(yīng)鋼在第九屆中國數(shù)據(jù)庫技術(shù)大會(huì)上的演講內(nèi)容整理而成,部分內(nèi)容有更新。 背景 近些年,傳統(tǒng)的數(shù)據(jù)庫運(yùn)維方式已經(jīng)越來越難于滿足業(yè)務(wù)方對(duì)數(shù)據(jù)庫的穩(wěn)定性、可用性、靈活...
摘要:本文將介紹美團(tuán)點(diǎn)評(píng)整個(gè)數(shù)據(jù)庫平臺(tái)的演進(jìn)歷史,以及我們當(dāng)前的情況和面臨的一些挑戰(zhàn),最后分享一下我們從自動(dòng)化到智能化運(yùn)維過渡時(shí),所進(jìn)行的思考探索與實(shí)踐。 從自動(dòng)化到智能化運(yùn)維過渡時(shí),美團(tuán)DBA團(tuán)隊(duì)進(jìn)行了哪些思考、探索與實(shí)踐?本文根據(jù)趙應(yīng)鋼在第九屆中國數(shù)據(jù)庫技術(shù)大會(huì)上的演講內(nèi)容整理而成,部分內(nèi)容有更新。 背景 近些年,傳統(tǒng)的數(shù)據(jù)庫運(yùn)維方式已經(jīng)越來越難于滿足業(yè)務(wù)方對(duì)數(shù)據(jù)庫的穩(wěn)定性、可用性、靈活...
閱讀 3204·2021-11-17 09:33
閱讀 3288·2021-11-15 11:37
閱讀 2950·2021-10-19 11:47
閱讀 3198·2019-08-29 15:32
閱讀 1001·2019-08-29 15:27
閱讀 1525·2019-08-29 13:15
閱讀 932·2019-08-29 12:47
閱讀 2023·2019-08-29 11:30