AIOps概念火熱钾挟,但如何落地?清華大學(xué)裴丹副教授在GOPS上海站的主題演講中饱岸,通過(guò)庖丁解牛的方式給出了AIOps落地的技術(shù)路線(xiàn)圖掺出;同時(shí)提出AIOps落地戰(zhàn)略路線(xiàn)圖,通過(guò)AIOps Challenge網(wǎng)站苫费,匯聚社區(qū)力量汤锨,共同推進(jìn)AIOps落地。 首屆挑戰(zhàn)賽獎(jiǎng)金近十萬(wàn)元百框。感謝智能運(yùn)維前沿的授權(quán)闲礼,今天我們?cè)俅握砼岬だ蠋煹难葜v內(nèi)容,希望對(duì)大家有所參考和借鑒意義。
要點(diǎn)總結(jié)
從戰(zhàn)術(shù)的角度柬泽,要把復(fù)雜的運(yùn)維挑戰(zhàn)分解定義成AI善于解決的問(wèn)題慎菲,各個(gè)突破;
從戰(zhàn)略的角度聂抢,要匯聚社區(qū)力量钧嘶,在開(kāi)放的平臺(tái)上聯(lián)合運(yùn)維界和算法界的力量共同攻克難題。
大家上午好琳疏,非常榮幸有决,能有這個(gè)機(jī)會(huì),跟這么多的運(yùn)維人一起交流智能運(yùn)維空盼。最近這兩年運(yùn)維里面有一個(gè)很火的一個(gè)詞叫做AIOps(智能運(yùn)維)书幕,并且有一小部分人一往無(wú)前的投入到AIOps中去了, 但是更多的人都還在持觀(guān)望態(tài)度揽趾,因?yàn)榇蠹覂?nèi)心中還存在一個(gè)無(wú)法回避的問(wèn)題:AIOps到底在自己的場(chǎng)景下怎么落地台汇?所以今天我要跟大家分享我認(rèn)為的AIOps落地應(yīng)該遵循的路線(xiàn)圖。既有技術(shù)路線(xiàn)圖篱瞎,也有戰(zhàn)略路線(xiàn)圖苟呐。這雖然不是唯一的一個(gè)路線(xiàn)圖,但這是我今后十年會(huì)不斷努力俐筋、專(zhuān)注和迭代的一個(gè)方向,希望為那些對(duì)AIOps感興趣的朋友們提供一些借鑒意義澄者。
運(yùn)維現(xiàn)狀與痛點(diǎn)
運(yùn)維的重要性
運(yùn)維在人類(lèi)未來(lái)的生產(chǎn)生活中的作用會(huì)越來(lái)越重要赠幕。預(yù)計(jì)到2020年全球?qū)⒂?00億到1000億的設(shè)備嫌套,這些設(shè)備會(huì)承載無(wú)數(shù)的服務(wù)碳胳,涵蓋互聯(lián)網(wǎng)翁锡、金融角溃、物聯(lián)網(wǎng)未蝌、智能制造怎憋、電信、電力網(wǎng)絡(luò)躁垛、政府等等的生產(chǎn)生活的方方面面。這些硬件和軟件都是人造出來(lái)的后德,都是不完美的涯穷。
運(yùn)維要做的是保障業(yè)務(wù)能夠可靠高速高效安全的運(yùn)轉(zhuǎn)奏寨,因?yàn)樗鼤?huì)直接影響到業(yè)務(wù)的收益和成本。
運(yùn)維的現(xiàn)狀與痛點(diǎn)
目前已有運(yùn)維方法的主要難點(diǎn)是突發(fā)故障的發(fā)現(xiàn)旷祸、止損辫诅、修復(fù)和規(guī)避邢滑,也是我們要解決的關(guān)鍵問(wèn)題侧戴。這些難點(diǎn)導(dǎo)致我們運(yùn)維人有很多痛點(diǎn)稀颁。
我相信在座的各位都看到過(guò)這幅圖秃踩,我們運(yùn)維人是全年365天7×24小時(shí)的救火蛇券,我們壓力山大牡昆。在過(guò)去的三個(gè)月里,我走訪(fǎng)了大概幾十家跟運(yùn)維相關(guān)的單位赢乓,我經(jīng)常聽(tīng)到的描述是我們的壓力很大忧侧、我們?cè)诓煌5谋冲伿ぁ⑽覀兊娜兆邮侨缏谋”⑿腋V笖?shù)低蚓炬、不知道下一秒會(huì)發(fā)生什么松逊、睡不了安穩(wěn)覺(jué),還有人略帶夸張的說(shuō)我們做運(yùn)維就是把腦袋別在褲腰帶上肯夏。但是從這些描述我們能體會(huì)到我們運(yùn)維人目前的工具還不足棺棵,因此如果人工智能能幫助我們的話(huà),運(yùn)維的生產(chǎn)力將得到極大的提高熄捍。
最早先運(yùn)維處于手工階段時(shí),可能每天需要“祈禱”不要發(fā)生故障母怜。在實(shí)現(xiàn)自動(dòng)化運(yùn)維后余耽,我們實(shí)現(xiàn)了不少自動(dòng)化腳本,把很多已知任務(wù)像流水線(xiàn)一樣串起來(lái)苹熏,就像特斯拉電動(dòng)機(jī)車(chē)流水線(xiàn)一樣碟贾。但是,很多故障都是突發(fā)的轨域。在故障突發(fā)時(shí)袱耽,我們會(huì)把所有相關(guān)的人糾集到一個(gè)作戰(zhàn)室,然后大家在一起拼命的想搞清楚問(wèn)題的原因干发。我們的目標(biāo)是兩分鐘就能搞定朱巨,實(shí)際上有可能需要一個(gè)半小時(shí)。在解決問(wèn)題的過(guò)程中枉长,每一分每一秒都在給業(yè)務(wù)帶來(lái)持續(xù)損失冀续。
系統(tǒng)、軟件必峰、架構(gòu)的演進(jìn)給運(yùn)維帶來(lái)的挑戰(zhàn)
在處理突發(fā)故障時(shí)洪唐,我們主要關(guān)心三個(gè)問(wèn)題(也是領(lǐng)導(dǎo)最關(guān)心的問(wèn)題):發(fā)生了什么,怎么解決吼蚁,多長(zhǎng)時(shí)間能解決凭需。由人力來(lái)回答這些問(wèn)題效率低、不準(zhǔn)確肝匆、不及時(shí)粒蜈。因?yàn)槲覀円獙?duì)付的這個(gè)系統(tǒng)實(shí)在是太復(fù)雜了。AIOps提高運(yùn)維生產(chǎn)力的一種方式就是把處理突發(fā)故障時(shí)的人力分析盡可能的都替換成機(jī)器來(lái)做术唬。
我們現(xiàn)在來(lái)看看復(fù)雜度的來(lái)源薪伏。下圖展示的是對(duì)一個(gè)互聯(lián)網(wǎng)公司來(lái)說(shuō)最不可控的部分——越來(lái)越復(fù)雜接入網(wǎng)絡(luò)。這是當(dāng)時(shí)AT&T的一個(gè)網(wǎng)絡(luò)拓?fù)鋱D粗仓,左上角的iPhone連接到互聯(lián)網(wǎng)的話(huà)嫁怀,經(jīng)歷的這個(gè)網(wǎng)絡(luò)設(shè)備的種類(lèi)有十幾種设捐,數(shù)量幾十個(gè)。
數(shù)據(jù)中心的系統(tǒng)也在不斷的演進(jìn)塘淑,其規(guī)模復(fù)雜度萝招、變更頻率非常大,技術(shù)更新也非常的快存捺。網(wǎng)絡(luò)中心的拓?fù)湓絹?lái)越龐大槐沼,像上圖所示,微軟Azure數(shù)據(jù)中心大概半年就會(huì)更新一次拓?fù)浣Y(jié)構(gòu)捌治,然后底層會(huì)逐漸融入SDN岗钩、NFV這樣的技術(shù)。
與此同時(shí)肖油,軟件的規(guī)模兼吓、調(diào)用關(guān)系、變更頻率也在逐漸增大森枪。上圖是前兩天騰訊視頻的朋友提供的軟件模塊之間的調(diào)用视搏,非常復(fù)雜。同時(shí)县袱,由于持續(xù)集成浑娜、敏捷開(kāi)發(fā)、DevOps式散,每一個(gè)模塊隨時(shí)都可能發(fā)生變化筋遭,隨時(shí)都可能給我們帶來(lái)故障,也就是說(shuō)整個(gè)云計(jì)算也在不斷地發(fā)生變化暴拄。容器宛畦、持續(xù)交付、軟件架構(gòu)揍移、工程方法也在不斷的演進(jìn)次和,會(huì)不斷的給我運(yùn)維工作帶來(lái)挑戰(zhàn)。
所以說(shuō)那伐,這么龐大踏施、復(fù)雜、多變的軟硬件系統(tǒng)罕邀,它的軟硬件故障的放生是不可能避免的畅形,但是我們運(yùn)維需要保障上層的業(yè)務(wù)可靠高速高效安全的運(yùn)轉(zhuǎn)。那遇到突發(fā)故障的時(shí)候我們?cè)趺茨軠?zhǔn)確快速的決策呢诉探?如果要靠人力去維護(hù)一些規(guī)則日熬,那是顯然不可行的。
必然趨勢(shì):基于ML的AIOps
那怎么辦呢肾胯?運(yùn)維大數(shù)據(jù)竖席。我們現(xiàn)在有非常多的監(jiān)控工具耘纱,采集存儲(chǔ)了海量的、價(jià)值極高的各種監(jiān)控?cái)?shù)據(jù)毕荐。我們希望當(dāng)遇到突發(fā)事件的時(shí)候束析,能夠基于這些數(shù)據(jù)快速準(zhǔn)確做出決策。
而處理海量憎亚、高速员寇、多樣的數(shù)據(jù)并產(chǎn)生高價(jià)值,正是機(jī)器學(xué)習(xí)的專(zhuān)長(zhǎng)第美。也就是說(shuō)蝶锋,采用機(jī)器學(xué)習(xí)技術(shù)是運(yùn)維的一個(gè)必然的走向。
我們希望在將來(lái)會(huì)有一個(gè)自動(dòng)決策的CPU什往,大大的提升我們運(yùn)維的效率牲览,要真正能做到不光是雙11的時(shí)候我們能夠喝茶來(lái)保證的運(yùn)維,而是在日常365天7×24小時(shí)都能夠喝著茶恶守,把運(yùn)維工作做好。那么將來(lái)的愿景是什么樣子呢贡必?現(xiàn)有監(jiān)控提供數(shù)據(jù)采集兔港,AIOps的引擎做出決策建議,少數(shù)運(yùn)維專(zhuān)家最終決策仔拟,執(zhí)行自動(dòng)化腳本進(jìn)行故障止損衫樊、修復(fù)、規(guī)避等操作利花。
具體而言科侈,
1、AIOps引擎 中的“異常檢測(cè)”模塊在檢測(cè)到異常之后可以將報(bào)警第一時(shí)間報(bào)給運(yùn)維人員炒事,達(dá)到“故障發(fā)現(xiàn)”的效果臀栈;
2、“異常定位”模塊達(dá)到“故障止損”的效果挠乳,它會(huì)給出一些止損的建議权薯,運(yùn)維專(zhuān)家看到這個(gè)定位之后也許他不知道根因,但是他知道怎么去根據(jù)已有的預(yù)案來(lái)進(jìn)行止損睡扬,然后再執(zhí)行自動(dòng)化的腳本盟蚣。如果是軟件上線(xiàn)導(dǎo)致的問(wèn)題我們回卷,如果業(yè)務(wù)不允許回卷就趕緊發(fā)布更新版本卖怜;如果是容量不夠了屎开,那我們動(dòng)態(tài)擴(kuò)容;如果部分軟硬件出問(wèn)題了马靠,我們切換一下流量等等奄抽。
3蔼两、AIOps引擎中的“根因分析”模塊會(huì)找出故障的根因,從而對(duì)其進(jìn)行修復(fù)如孝。如果根因是硬件出了問(wèn)題宪哩,像慢性病一樣的問(wèn)題,那我們可以讓我們的運(yùn)維人員去修復(fù)第晰。
4锁孟、同時(shí),AIOps 引擎中的“異常預(yù)測(cè)模塊”能夠提前預(yù)測(cè)性能瓶頸茁瘦、容量不足品抽、故障等,從而實(shí)現(xiàn)“故障規(guī)避”甜熔。比如圆恤,如果我們預(yù)測(cè)出來(lái)了設(shè)備故障的話(huà),那么可以更新設(shè)備腔稀;如果說(shuō)我們發(fā)現(xiàn)性能上的瓶頸是代碼導(dǎo)致的盆昙,那就交給研發(fā)人員去修改。
核心的AIOps的引擎會(huì)積累一個(gè)知識(shí)庫(kù)焊虏,從里邊不斷的學(xué)習(xí)淡喜。也就是說(shuō)監(jiān)控?cái)?shù)據(jù)會(huì)給AIOps提供訓(xùn)練數(shù)據(jù)的基礎(chǔ),然后專(zhuān)家會(huì)反饋一部分專(zhuān)家知識(shí)诵闭,上圖是我展望的AIOps大概的體系結(jié)構(gòu)炼团,這里面關(guān)鍵的一點(diǎn)是,我們還是離不開(kāi)運(yùn)維專(zhuān)家的疏尿。最終的止損瘟芝、規(guī)避的決策、軟件的代碼修復(fù)以及設(shè)備的更換還是要靠人來(lái)做的褥琐,但是機(jī)器把絕大部分工作都做了锌俱,包括異常檢測(cè)、異常定位敌呈、根因分析嚼鹉、異常預(yù)測(cè)。
AIOps前景聽(tīng)起來(lái)很美好驱富,那為什么還是有不少人持觀(guān)望態(tài)度呢锚赤?
這是因?yàn)槿藗冊(cè)趯?shí)踐AIOps的時(shí)候,往往容易踩到一個(gè)陷阱里面褐鸥,也就是說(shuō)想用直接應(yīng)用標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)算法线脚,通過(guò)黑盒的方法直接解決我們運(yùn)維問(wèn)題,這種做法通常是行不通的。
我舉一個(gè)異常檢測(cè)的例子浑侥。通過(guò)這個(gè)例子來(lái)說(shuō)明在實(shí)踐中AIOps真正被應(yīng)用起來(lái)會(huì)面臨什么樣的挑戰(zhàn)姊舵。
關(guān)于“故障發(fā)現(xiàn)”問(wèn)題,運(yùn)維界的現(xiàn)狀是漏報(bào)誤報(bào)多寓落、故障發(fā)現(xiàn)不及時(shí)括丁。這是因?yàn)槲覀兊谋O(jiān)控指標(biāo)非常多,異常的種類(lèi)也非常多伶选,因此設(shè)置靜態(tài)閾值是不能滿(mǎn)足需求的史飞。
我們有很多時(shí)序數(shù)據(jù)分析的算法,理論上可以做異常檢測(cè)仰税,但是他們往往適用場(chǎng)景不明確构资,比如上圖的KPI三條曲線(xiàn),人們往往并不清楚應(yīng)該采用哪個(gè)算法陨簇、使用什么參數(shù)吐绵。此外,數(shù)據(jù)中可能還有缺失河绽,處理不當(dāng)就會(huì)導(dǎo)致異常檢測(cè)準(zhǔn)確率很低己单。因此,現(xiàn)實(shí)中的異常檢測(cè)實(shí)踐中經(jīng)常出現(xiàn)的情形是耙饰,上周出現(xiàn)了漏報(bào)誤報(bào)纹笼,那我本周就調(diào)整一下閾值,但是根據(jù)這一個(gè)個(gè)case來(lái)決定靜態(tài)閾值的話(huà)榔幸,容易丟西瓜撿芝麻,導(dǎo)致出現(xiàn)新的矮嫉、可能是更嚴(yán)重的誤報(bào)漏報(bào)削咆。
還有,以往有算法解決了算法上述普適性問(wèn)題蠢笋,但是是基于監(jiān)督學(xué)習(xí)的拨齐。可是,在實(shí)踐中昨寞,異常標(biāo)注難以批量獲得瞻惋,只有一些零星的case。如果讓業(yè)務(wù)人員去進(jìn)行標(biāo)注的話(huà)援岩,會(huì)非常麻煩歼狼,因?yàn)樗麄冎挥幸恍v史的case。而標(biāo)注一條KPI曲線(xiàn)享怀,往往需要反反復(fù)復(fù)調(diào)整矯正羽峰,耗時(shí)耗力。
另外一個(gè)挑戰(zhàn)是,你可能需要同時(shí)開(kāi)始監(jiān)控幾百萬(wàn)梅屉、幾千萬(wàn)的KPI值纱,怎么快速給他們選擇算法呢?另外坯汤,可能一條曲線(xiàn)的模式經(jīng)過(guò)一次軟件變更之后發(fā)生巨變虐唠,算法參數(shù)就失效了,導(dǎo)致出現(xiàn)大量的誤報(bào)惰聂。
最后的結(jié)論是疆偿,任何一個(gè)算法都無(wú)法同時(shí)解決上面的挑戰(zhàn),那AIOps到底怎么解決這個(gè)問(wèn)題呢庶近,怎在“故障發(fā)現(xiàn)”這個(gè)痛點(diǎn)上真正落地呢翁脆?我們首先要明確目前的AI擅長(zhǎng)什么,不擅長(zhǎng)什么鼻种。
以上是清華大學(xué)張鈸院士的觀(guān)點(diǎn)反番。張鈸院士80多歲了,經(jīng)歷了人工智能的起起伏伏叉钥。他的演講中經(jīng)常提到罢缸,AI可以解決不少問(wèn)題,但是它目前的能力是有一定的范圍的投队。人工智能在解決很多類(lèi)型問(wèn)題時(shí)不管多么復(fù)雜都能做到枫疆,甚至超過(guò)人類(lèi)的水平。這些問(wèn)題的特點(diǎn)是什么呢敷鸦?有充足的數(shù)據(jù)和知識(shí)息楔,問(wèn)題定義很清楚,已經(jīng)明確了輸入輸出是什么扒披,以及單領(lǐng)域值依。
我們回過(guò)頭來(lái)看上面我們的“異常檢測(cè)”問(wèn)題,我們基本可以體會(huì)到要想一步到位解決異常檢測(cè)的所有挑戰(zhàn)碟案,是不現(xiàn)實(shí)的愿险,因?yàn)檫@個(gè)整體問(wèn)題已經(jīng)復(fù)雜到AI不擅長(zhǎng)解決的程度。
那么AIOps中“異常檢測(cè)”到底如何落地呢价说?很簡(jiǎn)單辆亏,我們的方法論就是庖丁解牛。
當(dāng)你剛開(kāi)始接觸異常檢測(cè)這一問(wèn)題時(shí)鳖目,你看到的就是一頭全牛扮叨。但是,當(dāng)你深入了解了異常檢測(cè)之后领迈,你就會(huì)目無(wú)全牛甫匹。你看到的是它的經(jīng)脈甸鸟。然后,你就不用困擾于具體的技術(shù)細(xì)節(jié)兵迅,而是要根據(jù)它的經(jīng)脈抢韭,閉著眼睛就可以根據(jù)腦海中的圖把這個(gè)牛給解剖了。每一刀都能夠切中要害恍箭,游刃有余刻恭。
其實(shí)我們做異常檢測(cè)這個(gè)事情也是一樣的,我們只需要把前面的挑戰(zhàn)都逐一的分解開(kāi)扯夭,個(gè)個(gè)擊破鳍贾。剛才我們那些問(wèn)題混雜在一起,這東西聽(tīng)起來(lái)就搞不定交洗,但是如果我們能夠把它們分解開(kāi)骑科,每一個(gè)變成了AI善于解決的問(wèn)題,讓它封閉住讓它well-defined构拳,那異常檢測(cè)就變得可解了咆爽。
上圖中左上子圖所示, 我們先做一個(gè)無(wú)監(jiān)督的異常檢測(cè)置森,為什么呢斗埂?因?yàn)閯偛耪f(shuō)了,標(biāo)注數(shù)據(jù)很難大批量獲得凫海,那我們先用一個(gè)無(wú)監(jiān)督的異常檢測(cè)作為初篩呛凶,一旦有了這個(gè)無(wú)監(jiān)督異常檢測(cè),那我們?cè)偬峁┮粋€(gè)非常友好的界面行贪,然后在上面我們的運(yùn)維人員可以零星的把他們碰到的case在上面標(biāo)注一下漾稀,然后我們提供基于算法的工具自動(dòng)搜索跟它標(biāo)注出來(lái)的異常區(qū)間類(lèi)似的,達(dá)到舉一反百建瘫、甚至舉一反千的效果崭捍,讓它的標(biāo)注工作能夠被充分利用,讓它的標(biāo)注開(kāi)銷(xiāo)非常非常低暖混,如右中子圖所示缕贡。
之后就可以采用已有的有監(jiān)督的異常檢測(cè)翁授,解決算法和參數(shù)的普適性問(wèn)題(左中子圖)拣播。同時(shí),如果遇到右下子圖的那個(gè)KPI曲線(xiàn)的模式的突變的話(huà)收擦,我們首先判斷新模式是否跟老模式屬于同一類(lèi)型贮配,然后自動(dòng)通過(guò)遷移學(xué)習(xí)自動(dòng)調(diào)整算法參數(shù)。
最后塞赂,如左下子圖所示泪勒,為了對(duì)大量的KPI自動(dòng)地分配檢測(cè)算法, 我們先把海量的KPI進(jìn)行分類(lèi)。即使有幾百萬(wàn)條曲線(xiàn)圆存,其類(lèi)別也不會(huì)太多叼旋。我們?cè)诿恳活?lèi)里面找到典型的算法,然后對(duì)同一類(lèi)里的每根曲線(xiàn)進(jìn)行微調(diào)沦辙。
那我們把這個(gè)稍微梳理一下
最底下的是機(jī)器學(xué)習(xí)算法夫植,最上面的是我們要做的這樣一個(gè)自適應(yīng)的異常檢測(cè)系統(tǒng),中間我們有一些技術(shù)層就是前面那頁(yè)具體要解決的問(wèn)題油讯,下面還有一個(gè)智能運(yùn)維的算法層详民,所以我通過(guò)這個(gè)小的實(shí)例來(lái)說(shuō)明一下我的idea,就是說(shuō)我們要把這個(gè)技術(shù)進(jìn)行分解陌兑,把我們要解決的復(fù)雜問(wèn)題庖丁解牛分解成實(shí)際上是AI善于解決的問(wèn)題沈跨。
通過(guò)上面這個(gè)例子,我們可以看到兔综,一個(gè)在實(shí)踐中看起來(lái)非常難的異常檢測(cè)問(wèn)題饿凛,通過(guò)刨丁解牛的方法,可以分解成一系列問(wèn)題的時(shí)候邻奠,它每一個(gè)都變成用AI方法可解了笤喳。
AIOps落地技術(shù)路線(xiàn)圖
我們面對(duì)的不再是運(yùn)維應(yīng)用場(chǎng)景與標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)算法之間巨大的鴻溝,而是在中間加入了AIOps基礎(chǔ)算法層碌宴,和AIOps關(guān)鍵技術(shù)層杀狡。其中關(guān)鍵技術(shù)層解決的是前一幅圖中的挑戰(zhàn),而基礎(chǔ)算法層為關(guān)鍵技術(shù)層和最終的運(yùn)維場(chǎng)景提供基礎(chǔ)的算法支撐贰镣。
如上圖所示呜象。比如說(shuō)剛才提到的我們需要對(duì)海量KPI進(jìn)行異常檢測(cè)的話(huà),就需要對(duì)它進(jìn)行聚類(lèi)碑隆。KPI聚類(lèi)的問(wèn)題就是一個(gè)單獨(dú)的問(wèn)題恭陡。如果把這一問(wèn)題拎出來(lái),你會(huì)發(fā)現(xiàn)這個(gè)問(wèn)題其實(shí)很抽象上煤,輸入是若干條曲線(xiàn)休玩,輸出是按照曲線(xiàn)形狀的分類(lèi)。這個(gè)問(wèn)題對(duì)于做算法的人來(lái)說(shuō)非辰俸荩可解拴疤,非常well-defined,只要給了數(shù)據(jù)独泞,人工智能肯定能搞定這個(gè)KPI聚類(lèi)算法呐矾,并且AI算法專(zhuān)家并不需深入理解運(yùn)維場(chǎng)景就能研究這個(gè)問(wèn)題。圖中的每個(gè)問(wèn)題都是一個(gè)AI比較擅長(zhǎng)解決的問(wèn)題懦砂,但是他們之間還有一些先后依賴(lài)關(guān)系蜒犯。也就是說(shuō)组橄,我們提供了一個(gè)落地AIOps中的“自適應(yīng)異常檢測(cè)”的一個(gè)技術(shù)路線(xiàn)圖。
上圖是AIOps的整體路線(xiàn)圖罚随。包含了異常檢測(cè)玉工、異常定位、根因分析和異常預(yù)測(cè)淘菩。原來(lái)實(shí)踐AIOps遇到困難的原因是試圖通過(guò)底層的標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)算法解決最上層的運(yùn)維應(yīng)用瓮栗,這種方法論解決不了實(shí)際問(wèn)題很正常,因?yàn)檫@種方法是吧問(wèn)題當(dāng)做一整頭牛來(lái)處理瞄勾。后面我們對(duì)故障止損费奸、故障修復(fù)、故障預(yù)測(cè)再簡(jiǎn)單做一下庖丁解牛进陡。
在故障報(bào)出來(lái)之后愿阐,我們希望它能夠有一些定位功能。那定位到什么粒度呢趾疚?
定位的粒度足以實(shí)施運(yùn)維專(zhuān)家提前準(zhǔn)備好的修復(fù)預(yù)案缨历,從而可以執(zhí)行自動(dòng)化的腳本進(jìn)行回卷、動(dòng)態(tài)擴(kuò)縮糙麦、切流量等等辛孵。
1、如右上子圖所示赡磅,如果是變更導(dǎo)致了業(yè)務(wù)的異常魄缚,那運(yùn)維人員把這個(gè)變更回卷一下就好了,如果業(yè)務(wù)不允許回卷(如涉及到用戶(hù)交易)那么就需要快速部署更新過(guò)的新版本焚廊。把這個(gè)問(wèn)題定義分解出來(lái)冶匹,那我們的預(yù)期是很清楚的——智能運(yùn)維的算法需要告訴運(yùn)維人員哪個(gè)變更導(dǎo)致了這個(gè)業(yè)務(wù)的巨變。我們之前也和百度在這方面合作過(guò)一個(gè)案例咆瘟。
2嚼隘、再以左上子圖的單指標(biāo)多維度監(jiān)控為例。例如袒餐,運(yùn)維人員需要監(jiān)控流量的異常飞蛹,并需要在數(shù)據(jù)中心、運(yùn)營(yíng)商灸眼、用戶(hù)類(lèi)型卧檐、瀏覽器等各個(gè)維度進(jìn)行監(jiān)控。一旦總流量出現(xiàn)了異常幢炸,它可能在各個(gè)維度都會(huì)出現(xiàn)報(bào)警泄隔。我們需要快速定位到具體哪些維度的組合導(dǎo)致了總流量的異常拒贱。比如宛徊,如果我們定位到根因是某個(gè)數(shù)據(jù)中心的某個(gè)集群的流量出現(xiàn)了異常佛嬉,那我們就可以把該數(shù)據(jù)中心的流量切換掉就可以解決問(wèn)題。
3闸天、同理暖呕,在右中子圖中,當(dāng)業(yè)務(wù)指標(biāo)發(fā)生劇烈波動(dòng)時(shí)威兜,我們找到該業(yè)務(wù)的哪些模塊的哪些指標(biāo)也同時(shí)發(fā)生了波動(dòng)嚎尤,并根據(jù)關(guān)聯(lián)程度進(jìn)行排序饵婆,給出最可能的根因位置,供運(yùn)維人員進(jìn)行定位库物。在左中子圖中,一個(gè)不完善組粒度的故障樹(shù)也能起到故障定位的效果贷帮。另外戚揭,還可以對(duì)故障進(jìn)行最粗粒度的故障定界,確定是網(wǎng)絡(luò)撵枢、服務(wù)器民晒、存儲(chǔ)、還是用戶(hù)的問(wèn)題锄禽,快速明確責(zé)任單位潜必,便于止損,如右下子圖所示沃但。最后磁滚,還可以判斷故障是否為容量不足導(dǎo)致,以便迅速做出動(dòng)態(tài)擴(kuò)容決策宵晚。
以上都是來(lái)源于實(shí)際的各種故障止損需求恨旱。由于問(wèn)題定義得相對(duì)清晰, 都可以通過(guò)AI來(lái)解決坝疼。
根因分析的前提是報(bào)警(要求異常檢測(cè)部分要報(bào)準(zhǔn))搜贤,下一步就是構(gòu)建故障樹(shù)。由于軟件模塊之間的依賴(lài)關(guān)系太復(fù)雜钝凶,因此故障樹(shù)的構(gòu)建非常難仪芒。對(duì)所有的報(bào)警信息進(jìn)行兩兩關(guān)聯(lián)的計(jì)算量過(guò)大。一種思路是構(gòu)建一個(gè)故障樹(shù)的超集耕陷,通過(guò)模塊調(diào)用鏈獲得模塊之間的邏輯調(diào)用關(guān)系掂名,通過(guò)配置信息獲得物理模塊之間的物理關(guān)聯(lián),比如共享機(jī)器資源哟沫、網(wǎng)絡(luò)資源等饺蔑。這兩部分一起構(gòu)成一個(gè)可能的故障樹(shù),這棵樹(shù)是真正故障樹(shù)的一個(gè)超集嗜诀。之后我們對(duì)這個(gè)超集中的每個(gè)邊進(jìn)行聯(lián)動(dòng)分析猾警、聯(lián)動(dòng)分析孔祸,對(duì)這棵樹(shù)進(jìn)行剪枝,構(gòu)成最終的故障傳播關(guān)系发皿。這種方法的覆蓋面廣崔慧,計(jì)算開(kāi)銷(xiāo)大大降低,并且是AI擅長(zhǎng)解決的問(wèn)題穴墅。當(dāng)我們擁有了故障傳播關(guān)系惶室,并它比較全而且準(zhǔn)的話(huà),根因分析就變得可行了玄货。當(dāng)發(fā)生故障時(shí)皇钞,依據(jù)準(zhǔn)確的報(bào)警, 順著故障傳播樹(shù)就能找到根因松捉,從而進(jìn)行故障修復(fù)鹅士。
性能瓶頸預(yù)測(cè)、容量預(yù)測(cè)惩坑、故障預(yù)測(cè)等異常預(yù)測(cè)是故障規(guī)避的經(jīng)典場(chǎng)景掉盅,如上圖所示。 性能瓶頸被預(yù)測(cè)出來(lái)后以舒,比如發(fā)現(xiàn)哪個(gè)模塊是整個(gè)系統(tǒng)性能的瓶頸趾痘,就可以對(duì)這部分進(jìn)行代碼優(yōu)化,如果代碼優(yōu)化來(lái)不及的話(huà)蔓钟,也可以選擇定向擴(kuò)容永票。容量預(yù)測(cè)之后,可以進(jìn)行動(dòng)態(tài)的擴(kuò)縮容滥沫、資源預(yù)算等侣集,比如當(dāng)業(yè)務(wù)需要達(dá)到每秒三十萬(wàn)筆交易時(shí),也許不用統(tǒng)一的全面的擴(kuò)容兰绣,只需要把瓶頸部分的容量擴(kuò)展世分。故障預(yù)測(cè)可以幫助進(jìn)行動(dòng)態(tài)的切流量、替換硬件等等缀辩。時(shí)間關(guān)系臭埋,不展開(kāi)詳述。
以上就是我認(rèn)為的AIOps落地的技術(shù)路線(xiàn)圖臀玄,是根據(jù)我十幾年的運(yùn)維科研經(jīng)驗(yàn)的基礎(chǔ)上總結(jié)歸納出來(lái)的瓢阴。我們清華大學(xué)NetMan實(shí)驗(yàn)室二十左右個(gè)同學(xué)對(duì)前面提到的每個(gè)題目都正在進(jìn)行研究。
AIOps這么大的一件事還需要匯聚社區(qū)的力量健无。因此我提出的AIOps的戰(zhàn)略路線(xiàn)圖是荣恐,通過(guò)社區(qū)集合整個(gè)工業(yè)界的力量(因?yàn)樗麄兪煜み\(yùn)維場(chǎng)景、也有豐富的數(shù)據(jù))同時(shí)集合算法界的力量(因?yàn)樗麄兪煜に惴ǎR酝I(yè)界和學(xué)術(shù)界的交流就是工業(yè)界和科學(xué)家的一對(duì)一進(jìn)行交流合作叠穆∩倨幔可能整個(gè)項(xiàng)目的一半時(shí)間都花在問(wèn)題的定義和迭代上面,而且沒(méi)有公認(rèn)的benchmark數(shù)據(jù)和缺乏比較性痹束。
大家看到了我們前面的技術(shù)路線(xiàn)圖,我們現(xiàn)在已經(jīng)把問(wèn)題定義好了讶请,而且受到ImageNet的啟發(fā)祷嘶,我們也創(chuàng)建了運(yùn)維領(lǐng)域的智能挑戰(zhàn)賽。而這個(gè)智能運(yùn)維的挑戰(zhàn)賽實(shí)際上它也是一種社區(qū)合作的思路夺溢。我稱(chēng)之為工業(yè)界和算法界的合作2.0论巍。普林斯頓大學(xué)畢業(yè)的華裔女科學(xué)家李飛飛在不被看好的情況下創(chuàng)建了ImageNet的數(shù)據(jù)集和人工智能挑戰(zhàn)賽,重新定義了研究人工智能的方式风响,培養(yǎng)了很多人才和專(zhuān)家嘉汰,推動(dòng)了如今如火如荼的人工智能浪潮,最終帶動(dòng)了整個(gè)人工智能領(lǐng)域的高速發(fā)展状勤。
我們的思路也是類(lèi)似的鞋怀,在智能運(yùn)維領(lǐng)域,我們收集了運(yùn)維的場(chǎng)景和面臨的主要挑戰(zhàn)持搜,把這些問(wèn)題分解成前面的技術(shù)路線(xiàn)圖密似,放在了一個(gè)公共的競(jìng)賽網(wǎng)站上面。除了網(wǎng)站以外葫盼,我們還有來(lái)自工業(yè)界的真實(shí)數(shù)據(jù)集残腌。下圖是我們的競(jìng)賽網(wǎng)站。經(jīng)過(guò)我們的網(wǎng)站建設(shè)支持方——騰訊游戲的艱苦奮戰(zhàn)贫导,昨天晚上網(wǎng)站終于上線(xiàn)了抛猫。右上角是網(wǎng)站的二維碼,直接輸入這個(gè)url也同樣可以訪(fǎng)問(wèn)孩灯。
在這個(gè)網(wǎng)站上既有運(yùn)維場(chǎng)景闺金,比如異常檢測(cè)、聚類(lèi)峰档;又有數(shù)據(jù)集掖看、比賽和科研問(wèn)題。針對(duì)科研問(wèn)題面哥,我們會(huì)講它的背景哎壳、面臨的挑戰(zhàn),給出它的數(shù)據(jù)的示例尚卫、格式以及評(píng)估的方法归榕,值得注意的是,統(tǒng)一的評(píng)估方法也是很重要吱涉,因此我們也提供了評(píng)估方法刹泄。在這里我也非常希望能和大家一起外里,匯聚社區(qū)力量,進(jìn)一步探討智能運(yùn)維的算法特石,共同推進(jìn)AIOps的發(fā)展盅蝗。
最后總結(jié)一下:AIOps的大潮已經(jīng)來(lái)了,路線(xiàn)圖也已經(jīng)有了姆蘸,那我們還猶豫什么呢墩莫?讓我們一起來(lái)通過(guò)社區(qū)的努力,匯聚社區(qū)的力量逞敷,共同推進(jìn)AIOps在中國(guó)狂秦、在世界范圍內(nèi)落地吧,謝謝大家推捐!