中國(guó)應(yīng)用性能管理行業(yè)盛宴—2017中國(guó)應(yīng)用性能管理大會(huì)(簡(jiǎn)稱APMCon 2017)于8月10日至11日在北京新云南皇冠假日酒店隆重召開(kāi)。本屆APMCon是由聽(tīng)云、極客邦和InfoQ聯(lián)合主辦,作為國(guó)內(nèi)APM領(lǐng)域最具影響力的技術(shù)大會(huì),本次大會(huì)以“驅(qū)動(dòng)應(yīng)用架構(gòu)優(yōu)化與創(chuàng)新”為主題,致力于推動(dòng)APM在國(guó)內(nèi)的成長(zhǎng)與發(fā)展。 清華大學(xué)計(jì)算機(jī)系副教授、智能運(yùn)維算法專家—裴丹于APMCon 2017大會(huì)主論壇發(fā)表了題為《智能運(yùn)維中的科研問(wèn)題》的演講,現(xiàn)場(chǎng)解讀了在智能運(yùn)維領(lǐng)域,工業(yè)界與學(xué)術(shù)界間合作的重要性以及智能運(yùn)維如何落地的思路。 以下為演講實(shí)錄: 裴丹:大家好,我是裴丹。今天非常榮幸有此機(jī)會(huì)跟大家分享一下我在智能運(yùn)維科研領(lǐng)域的一些思考。我做了十幾年的運(yùn)維,之前在AT&T、百度以及其它公司成功地解決了一系列運(yùn)維難題。從去年開(kāi)始,我著手于將智能運(yùn)維中的算法在更廣泛的范圍落地。當(dāng)然,在這個(gè)過(guò)程中我遇到了一些挑戰(zhàn),也有了一些思考。所以,今天主要跟大家分享一下我的一些思考結(jié)果 。 為什么有這樣一個(gè)題目(《智能運(yùn)維中的科研問(wèn)題》)呢?為什么在這個(gè)場(chǎng)合講科研問(wèn)題呢?這其實(shí)是我思考的結(jié)果。我認(rèn)為,在目前這個(gè)階段,智能運(yùn)維科研想要繼續(xù)往前推進(jìn)并取得更好的成果,我們需要把智能運(yùn)維里的一些關(guān)鍵算法定義好、分解好。這是我們智能運(yùn)維落地的一個(gè)關(guān)鍵步驟和手段。 我今天報(bào)告的主旨主要有兩點(diǎn)。第一,現(xiàn)在智能運(yùn)維很熱門(mén)、很火爆,大家都感興趣。據(jù)我總結(jié),智能運(yùn)維落地的核心挑戰(zhàn)是:從工業(yè)界的角度,我們有數(shù)據(jù)、有應(yīng)用,但是缺乏一些算法和經(jīng)驗(yàn);從學(xué)術(shù)界的角度,我們有不少理論算法,但是缺乏實(shí)際的數(shù)據(jù)以支持科學(xué)研究,也不熟悉運(yùn)維的場(chǎng)景。盡管我已經(jīng)工業(yè)界和學(xué)術(shù)界的合作方面有了很多實(shí)踐,但我切身感受到,相對(duì)來(lái)說(shuō),這種一對(duì)一的交流效率比較低,且見(jiàn)效慢,特別不符合當(dāng)前的開(kāi)源開(kāi)放的趨勢(shì)。 我的解決思路是,以科研問(wèn)題為導(dǎo)向,將我們?cè)谥悄苓\(yùn)維領(lǐng)域需要解決的一系列挑戰(zhàn)性的問(wèn)題,定義成切實(shí)可行的科研問(wèn)題。這樣,就有明確的輸入和輸出。在這種情況下,如果我們的企業(yè)能夠擁抱開(kāi)源開(kāi)放的趨勢(shì),把數(shù)據(jù)開(kāi)源出來(lái),就能讓學(xué)術(shù)界更多的研究人員參與到研究智能運(yùn)維有關(guān)的算法中來(lái)——這就是我今天演講的主旨。40分鐘的演講結(jié)束后,如果大家能夠記住這幾點(diǎn),那么我的演講就是成功的。 一、智能運(yùn)維的發(fā)展歷程 我們大家都知道,在運(yùn)維發(fā)展的過(guò)程中,最早出現(xiàn)的是手工運(yùn)維;在大量的自動(dòng)化腳本產(chǎn)生后,就有了自動(dòng)化的運(yùn)維;后來(lái)又出現(xiàn)了DevOps和智能運(yùn)維。在運(yùn)維的過(guò)程中,涉及到的步驟可以概括為:產(chǎn)生海量的監(jiān)測(cè)日志,進(jìn)行分析決策,并通過(guò)自動(dòng)化的腳本進(jìn)行控制。運(yùn)維的發(fā)展過(guò)程,主要是分析決策步驟發(fā)生了變化:起初,由人工決策分析;后來(lái),在采集數(shù)據(jù)的基礎(chǔ)上,使用自動(dòng)化的腳本進(jìn)行決策分析;最后,用機(jī)器學(xué)習(xí)方法做決策分析。 根據(jù)Gartner Report,智能運(yùn)維相關(guān)的技術(shù)產(chǎn)業(yè)處于上升期。2016年,AIOps的部署率低于5%,Gartner預(yù)計(jì)2019年AIOps的全球部署率可以達(dá)到25%。所以,AIOps的前景一片光明。 如果AIOps普遍部署之后會(huì)是什么樣的呢?現(xiàn)在做運(yùn)維的同學(xué)們會(huì)變成怎樣? 從機(jī)器的角度,基礎(chǔ)性、重復(fù)性的運(yùn)維工作都交給計(jì)算機(jī)來(lái)做了;同時(shí),機(jī)器通過(guò)機(jī)器學(xué)習(xí)算法為復(fù)雜的問(wèn)題提供決策的建議,然后向運(yùn)維專家學(xué)習(xí)解決復(fù)雜問(wèn)題的思路。從運(yùn)維專家的角度,運(yùn)維專家主要處理運(yùn)維過(guò)程中的難題,同時(shí)基于機(jī)器建議給出決策和訓(xùn)練機(jī)器徒弟。運(yùn)維工程師將逐漸轉(zhuǎn)型為大數(shù)據(jù)工程師,主要負(fù)責(zé)開(kāi)發(fā)數(shù)據(jù)采集程序以及自動(dòng)化執(zhí)行腳本,負(fù)責(zé)搭建大數(shù)據(jù)基礎(chǔ)架構(gòu),同時(shí)高效實(shí)現(xiàn)基于機(jī)器學(xué)習(xí)的算法。機(jī)器學(xué)習(xí)科學(xué)家主要負(fù)責(zé)AI的落地應(yīng)用。智能運(yùn)維領(lǐng)域相對(duì)于其它AI應(yīng)用領(lǐng)域的優(yōu)勢(shì)在于,我們不僅有大量的應(yīng)用數(shù)據(jù),而且有實(shí)際的應(yīng)用場(chǎng)景和部署環(huán)境。因此,人工智能在計(jì)算機(jī)視覺(jué)、自然語(yǔ)言理解、語(yǔ)音識(shí)別之外,又多了一個(gè)落地應(yīng)用——這是一座尚未開(kāi)采的金礦。 1、智能運(yùn)維科研門(mén)檻高-工業(yè)界 一般有“前景光明”、“前途光明”這些詞的時(shí)候,下面跟著的就是“道路曲折”。實(shí)際上,智能運(yùn)維是一個(gè)門(mén)檻很高的工作。為什么呢?因?yàn)橹悄苓\(yùn)維需要三方面的知識(shí): 第一,我們要熟悉應(yīng)用的行業(yè),比如說(shuō)互聯(lián)網(wǎng)、電信或者相對(duì)傳統(tǒng)的行業(yè),如金融、電力等等。 第二,我們要熟悉運(yùn)維相關(guān)的場(chǎng)景,包括異常檢測(cè)、故障預(yù)測(cè)、瓶頸分析、容量預(yù)測(cè)等。 第三,雖然工業(yè)界熟悉運(yùn)維行業(yè)和場(chǎng)景,熟悉生產(chǎn)實(shí)踐中的挑戰(zhàn),也有數(shù)據(jù)。但是,工業(yè)界并不熟悉整個(gè)智能運(yùn)維中最重要的部分——如何把實(shí)際問(wèn)題轉(zhuǎn)化為算法問(wèn)題(后面會(huì)講到如何把實(shí)踐中的難題分解成多個(gè)算法并逐個(gè)解決)。同時(shí),工業(yè)界也不太熟悉查閱科研文獻(xiàn),特別是跨行業(yè)的文獻(xiàn)。因此,智能運(yùn)維是一個(gè)需要三方面領(lǐng)域知識(shí)結(jié)合的高門(mén)檻領(lǐng)域。 所以,我想通過(guò)自己的一些努力,來(lái)降低工業(yè)界部署智能運(yùn)維的門(mén)檻。比如,我們清華的實(shí)驗(yàn)室運(yùn)營(yíng)了一個(gè)微信公眾號(hào),叫做“智能運(yùn)維前沿”。我們基本上兩三周推出一篇公眾號(hào)文章,介紹世界范圍內(nèi)智能運(yùn)維的前沿進(jìn)展。這是“智能運(yùn)維前沿”公眾號(hào)關(guān)注人數(shù)的增長(zhǎng)情況。我們有一篇公眾號(hào)文章被閱讀了超過(guò)2000次,轉(zhuǎn)載之后又有5000次閱讀。這是我們共同努力的結(jié)果。 在智能運(yùn)維文獻(xiàn)里有幾十種常見(jiàn)的基礎(chǔ)算法。但是,工業(yè)界并不熟悉這些算法。所以,我們利用微信公眾號(hào)介紹這些算法。下面我將介紹一個(gè)例子——通過(guò)機(jī)器學(xué)習(xí)方法提升視頻流媒體的用戶體驗(yàn)和觀看時(shí)長(zhǎng)。 這是一位CMU教授的系列文章。這位教授在一個(gè)做視頻分發(fā)的創(chuàng)業(yè)公司做了若干工作。2011年,他在學(xué)術(shù)界發(fā)表了一篇文章。這一工作比較簡(jiǎn)單,主要為了提升用戶觀看流媒體的體驗(yàn),其中用到了相關(guān)分析、線性回歸、信息增益等簡(jiǎn)單算法。2013年,該教授基于網(wǎng)絡(luò)行為數(shù)據(jù)和性能數(shù)據(jù),使用決策樹(shù)方法預(yù)測(cè)用戶的觀看時(shí)長(zhǎng)。該教授于2017年發(fā)表了一篇新的文章,將視頻質(zhì)量的實(shí)時(shí)優(yōu)化問(wèn)題轉(zhuǎn)化為一種基礎(chǔ)的強(qiáng)化學(xué)習(xí)問(wèn)題,并使用上限置信區(qū)間算法有效解決了這一問(wèn)題。 2、智能運(yùn)維科研門(mén)檻高-學(xué)術(shù)界 在學(xué)術(shù)界中,很少有人做智能運(yùn)維方向。這是因?yàn)?,?duì)于學(xué)術(shù)界來(lái)說(shuō),進(jìn)入到智能運(yùn)維這一科研領(lǐng)域具有很強(qiáng)的挑戰(zhàn)性。為什么呢? 雖然學(xué)術(shù)界研究人員的算法能力相對(duì)較強(qiáng),但是他們往往不熟悉行業(yè)和運(yùn)維領(lǐng)域的相關(guān)知識(shí)。而智能運(yùn)維處于三個(gè)領(lǐng)域的交叉部分。這就導(dǎo)致智能運(yùn)維的門(mén)檻比較高,需要花大量的時(shí)間和精力才能進(jìn)入智能運(yùn)維領(lǐng)域。 前面講了如何降低工業(yè)界進(jìn)入智能運(yùn)維的門(mén)檻。同時(shí),我也做了一些工作,以降低學(xué)術(shù)界進(jìn)入智能運(yùn)維領(lǐng)域的門(mén)檻。例如,我應(yīng)邀在《中國(guó)計(jì)算機(jī)學(xué)會(huì)通訊》上發(fā)表文章,向?qū)W術(shù)界的同行介紹智能運(yùn)維中的科研問(wèn)題。 但是,僅僅宣傳是遠(yuǎn)遠(yuǎn)不夠的,我們還要實(shí)踐。去年,我在第一屆APMCon會(huì)議上做了報(bào)告,講述了當(dāng)時(shí)和百度合作的三個(gè)案例,包括異常檢測(cè)、瓶頸分析以及智能熔斷。這種公開(kāi)的宣傳給我自己帶來(lái)了很多新的合作。除了與百度的合作,我們清華實(shí)驗(yàn)室相繼與滴滴、搜狗、阿里巴巴、騰訊簽署了正式的合作協(xié)議。這驗(yàn)證我的在去年我在APMCon上演講的觀點(diǎn):工業(yè)界可以獲得算法層面的深度支持,學(xué)術(shù)界可以獲得現(xiàn)實(shí)世界的前沿問(wèn)題和數(shù)據(jù),有利于發(fā)表論文和申請(qǐng)國(guó)家項(xiàng)目。 二、工業(yè)界-學(xué)術(shù)界合作 1.0:一對(duì)一交流合作 但是,現(xiàn)在這種工業(yè)界跟學(xué)術(shù)界的合作方式,還處于1.0階段,即一對(duì)一的交流。在這個(gè)過(guò)程中,我們遇到了諸多挑戰(zhàn)。 1、交流合作效率低,見(jiàn)效慢。比如說(shuō)我是這個(gè)教授,我跟A公司討論一下,再跟B公司討論一下。很多情況下,不同公司遇到的問(wèn)題都是類似的,比如異常檢測(cè)。但是,我需要跟每個(gè)公司梳理一遍這些問(wèn)題。C公司可能不知道我,就找另外一位教授,他依然需要梳理這些問(wèn)題。這就大大降低了交流合作的效率。我們知道,科研最難的部分,就是把一個(gè)實(shí)踐中的問(wèn)題定義好。當(dāng)定義好問(wèn)題之后,只要數(shù)據(jù)準(zhǔn)備好,其他問(wèn)題都可以迎刃而解。 2、智能運(yùn)維算法不幸成了特權(quán)。因?yàn)楹苌儆薪淌谠敢馊プ鲞@種一對(duì)一交流,而愿意或有渠道和學(xué)??蒲腥藛T溝通交流的公司也不多。這就導(dǎo)致,在國(guó)外,只有少數(shù)大公司和教授才能合作。比如,目前只有Google、 Microsoft、Linkedin、Facebook、雅虎等大公司發(fā)表過(guò)智能運(yùn)維有關(guān)的論文。 3、涉及知識(shí)產(chǎn)權(quán),不符合開(kāi)源大趨勢(shì)。因?yàn)橐粚?duì)一的合作需要簽署涉及知識(shí)產(chǎn)權(quán)的協(xié)議,不符合開(kāi)源的大趨勢(shì)。 2.0:開(kāi)源開(kāi)放 1對(duì)1交流效率低,那具體應(yīng)該怎么做呢?我們希望擁抱開(kāi)源開(kāi)放的文化,形成工業(yè)界與學(xué)術(shù)界合作的2.0。 開(kāi)源開(kāi)放的大趨勢(shì)已經(jīng)對(duì)工業(yè)界和學(xué)術(shù)界產(chǎn)生了巨大的影響。大家耳熟能詳?shù)腍adoop、Ecosystem、TensorFlow等,都是開(kāi)源開(kāi)放的產(chǎn)物。在算法層面,當(dāng)前有arXiv共享算法(論文)平臺(tái),和Github代碼共享;在數(shù)據(jù)層面,ImageNet等數(shù)據(jù)共享平臺(tái)對(duì)機(jī)器學(xué)習(xí)算法的研究起到了巨大的推動(dòng)作用;在計(jì)算能力層面,各大公司都建立了AI云;在人才層面,我們也可以看到,學(xué)術(shù)界和工業(yè)界的人才流動(dòng)比原來(lái)順暢多了。 所以,我們的基本思路是,希望能夠建立智能運(yùn)維的問(wèn)題庫(kù)。具體的,我們嘗試把運(yùn)維的常見(jiàn)問(wèn)題梳理出來(lái),并存儲(chǔ)到一個(gè)問(wèn)題庫(kù)里。這樣的話,對(duì)于缺乏智能運(yùn)維背景知識(shí)的科研人員,在問(wèn)題的輸入、輸出、數(shù)據(jù)集齊全的前提下,可以很容易地著手解決問(wèn)題庫(kù)中的科研問(wèn)題。對(duì)于做運(yùn)維實(shí)踐的工業(yè)界的同學(xué)們,當(dāng)遇到實(shí)際的問(wèn)題時(shí),可以查詢問(wèn)題庫(kù)中的解決方案。 這一思路受到了斯坦福教授李飛飛的影響。她最近在宣傳普世化AI的思路——讓所有人都可以使用AI。李飛飛教授建立的 ImageNet上面有1000多萬(wàn)張圖片的分類標(biāo)注數(shù)據(jù)。在2012年Hinton教授提出了一種基于CNN的圖片分類算法,取得比以往最好結(jié)果高好幾個(gè)百分點(diǎn)的結(jié)果, 引起了深度學(xué)習(xí)的復(fù)興。現(xiàn)在,她同時(shí)兼任Google機(jī)器學(xué)習(xí)部門(mén)的負(fù)責(zé)人。她在宣傳普世化AI思路時(shí),提到普世化有四個(gè)基本點(diǎn):計(jì)算能力、數(shù)據(jù)、算法、人才。這四個(gè)基本點(diǎn)跟我們要落地智能運(yùn)維所遇到的挑戰(zhàn)是一樣的。 因?yàn)槲覀円残枰玫綑C(jī)器學(xué)習(xí)和AI的技術(shù)來(lái)解決智能運(yùn)維中的挑戰(zhàn)性問(wèn)題。 除了問(wèn)題庫(kù),學(xué)術(shù)界還需要數(shù)據(jù)集。此外,工業(yè)界最好能提供云計(jì)算資源,讓學(xué)術(shù)界提供的算法在云端跑。數(shù)據(jù)公開(kāi)后,學(xué)術(shù)界可以公布訓(xùn)練好的算法,工業(yè)界就可以直接使用這些算法。在人才方面,工業(yè)界可以與學(xué)術(shù)界合作。同時(shí),那些參與我們的智能運(yùn)維算法大賽且排名靠前的學(xué)生,也可以成為工業(yè)界的人才儲(chǔ)備。最終,我們希望所有的公司都能用上最好的智能運(yùn)維算法。 三、分解定義智能運(yùn)維中的科研問(wèn)題 下面分解定義一下智能運(yùn)維中的科研問(wèn)題。由于時(shí)間關(guān)系,我只能概述算法的特性。 為什么我們要定義科研問(wèn)題呢?對(duì)于科研工作者來(lái)說(shuō),類似Gartner Report 中列舉的智能運(yùn)維問(wèn)題太寬泛。首先,科研問(wèn)題需要清晰的輸入,并且數(shù)據(jù)是可以獲得的;其次,科研問(wèn)題要有清晰的輸出,并且輸出的目標(biāo)要切實(shí)可行;再次,科研問(wèn)題要有高層面的技術(shù)路線圖,以及參考文獻(xiàn);最后,非智能運(yùn)維領(lǐng)域的學(xué)術(shù)界要能理解該科研問(wèn)題。 這是我們已經(jīng)梳理出來(lái)的一些科研問(wèn)題。我將用后面的時(shí)間來(lái)解釋一下這些算法。這些算法分為三種種:第一種算法是相對(duì)獨(dú)立的基礎(chǔ)模塊,面臨的挑戰(zhàn)較少,可以直接落地;第二種算法依賴于其他的算法,我們需要把這些算法分解成一個(gè)個(gè)切實(shí)可行的解決問(wèn)題。 第三種是把非常難的問(wèn)題降低要求和難度,“退而求其次”。 1、基礎(chǔ)模塊 先講一下基礎(chǔ)模塊?;A(chǔ)模塊是相對(duì)獨(dú)立并能夠落地的。 A、KPI瓶頸分析算法 我介紹的第一個(gè)基礎(chǔ)模塊算法是KPI瓶頸分析算法。在智能運(yùn)維領(lǐng)域和APM領(lǐng)域,我們收集了很多的數(shù)據(jù),數(shù)據(jù)的形式有KPI時(shí)間序列、日志等。假如打開(kāi)一個(gè)頁(yè)面的響應(yīng)時(shí)間(首屏?xí)r間)是我們的KPI,當(dāng)首屏?xí)r間不理想、不滿意時(shí),我們希望能夠找出哪些條件的組合導(dǎo)致了首屏?xí)r間不理想。這就是我們要解決的KPI瓶頸分析的定義。該問(wèn)題的輸入為一張又寬又長(zhǎng)的表,其中包含KPI和影響到KPI的多維屬性。 輸出為可能影響KPI性能的屬性組合。這一科研問(wèn)題具有廣泛的應(yīng)用場(chǎng)景,包括首屏?xí)r間、應(yīng)用加載時(shí)間、軟件報(bào)錯(cuò)、視頻傳輸用戶體驗(yàn)等。在具體應(yīng)用時(shí),這一科研問(wèn)題面臨著諸多挑戰(zhàn):搜索的空間巨大;不屬性之間可能存在關(guān)聯(lián)關(guān)系,導(dǎo)致用簡(jiǎn)單的分析方法是不可行的。KPI瓶頸分析的常用基礎(chǔ)算法有:決策樹(shù)、聚類樹(shù)(CLTree)、層次聚類。 B、故障預(yù)測(cè)算法 我介紹的第二個(gè)基礎(chǔ)模塊算法,是我們最近跟百度系統(tǒng)部合作的一個(gè)案例——交換機(jī)故障預(yù)測(cè)。在交換機(jī)故障之前,我們可以從交換機(jī)日志中提取一些預(yù)示故障的信號(hào)。如果找到這些信號(hào),我們就可以提前兩小時(shí)預(yù)測(cè)出交換機(jī)故障。故障預(yù)測(cè)的應(yīng)用場(chǎng)景還包括硬盤(pán)故障預(yù)測(cè)、服務(wù)器故障預(yù)測(cè)等,使用到的算法包括隱式馬爾科夫模型、支持向量機(jī),隨機(jī)森林等。 在具體應(yīng)用時(shí),故障預(yù)測(cè)面臨著一些挑戰(zhàn)。訓(xùn)練故障預(yù)測(cè)模型的數(shù)據(jù)需要足夠多,但往往實(shí)踐中的故障案例比較少。雖然日志量很大,但日志中的有益信息相對(duì)較少。我們已經(jīng)實(shí)現(xiàn)了切實(shí)可行的系統(tǒng),且已經(jīng)在百度運(yùn)行。 2、庖丁解牛 當(dāng)我們應(yīng)用層出現(xiàn)問(wèn)題的時(shí)候,我們希望找到問(wèn)題的原因。這里要解決的問(wèn)題都描述過(guò)了,常用的根因分析算法有基于故障傳播鏈的、有基于概率圖模型的。這里我們對(duì)基于故障傳播鏈的的思路來(lái)庖丁解牛。 假如說(shuō)我們有這樣的故障傳播鏈,同時(shí)又對(duì)事件有很好的監(jiān)測(cè)和準(zhǔn)確的報(bào)警,那根因的分析就簡(jiǎn)單了。因?yàn)橹恍枰樦收蟼鞑ユ湼鱾€(gè)報(bào)警找,找到最后一個(gè)就是根因。這其中有兩個(gè)關(guān)鍵的步驟,一個(gè)是KPI異常檢測(cè),另一個(gè)是故障傳播鏈,下面會(huì)詳細(xì)介紹這兩部分。 A、異常檢測(cè) 首先是異常檢測(cè),很多算法是基于KPI的趨勢(shì)預(yù)測(cè)的,還有一些算法是基于機(jī)器學(xué)習(xí)的,機(jī)器學(xué)習(xí)的算法需要有標(biāo)注。而標(biāo)注會(huì)給運(yùn)維人員帶來(lái)很多開(kāi)銷,所以能不能做一些工作減少標(biāo)注的開(kāi)銷呢?這其中就包括相似異常的查找,運(yùn)維人員標(biāo)一個(gè)異常后,能不能自動(dòng)地把相似的、相關(guān)的異常都找出來(lái)? 以上是對(duì)異常檢測(cè)問(wèn)題的簡(jiǎn)單分解,后面會(huì)更詳細(xì)的說(shuō)明。 異常檢測(cè)的問(wèn)題定義很簡(jiǎn)單,就是對(duì)于這樣的隨著時(shí)間有周期性變化的KPI曲線,當(dāng)它發(fā)生異常的時(shí)候能夠快速準(zhǔn)確的報(bào)警,它的常見(jiàn)的算法有:基于窗口,基于預(yù)測(cè),基于近似性,基于隱式馬爾可夫模型,也有機(jī)器學(xué)習(xí),集成學(xué)習(xí),遷移學(xué)習(xí),深度學(xué)習(xí),深度生成模型等等。 異常檢測(cè)所面對(duì)的挑戰(zhàn)就是KPI種類各異,如果基于趨勢(shì)預(yù)測(cè)算法,調(diào)整算法參數(shù)費(fèi)時(shí)費(fèi)力,同時(shí)需要人工標(biāo)注,人工標(biāo)注也可能不準(zhǔn)確。 我們?cè)俜纸庖幌拢瑒倓偺岬搅水惓z測(cè)的一種思路是基于KPI趨勢(shì)預(yù)測(cè)。KPI趨勢(shì)預(yù)測(cè)就是通過(guò)時(shí)序數(shù)據(jù)的算法能預(yù)測(cè)出來(lái)KPI將來(lái)一段時(shí)間是什么樣的,取什么值,常見(jiàn)的算法有ARIMA、EWMA、Holt-Winters、時(shí)序數(shù)據(jù)分解、RNN等。主要挑戰(zhàn)包括突發(fā)事件的影響、節(jié)假日的影響、數(shù)據(jù)不規(guī)則的影響,最重要的就是大家對(duì)異常的定義不一樣,會(huì)有主觀的因素,最后導(dǎo)致這些算法很難調(diào)。 異常檢測(cè)的另外一個(gè)思路基于機(jī)器學(xué)習(xí)來(lái)做, 但是這種方法通常都需要標(biāo)注,而標(biāo)注是需要消耗人力資源的。并且如果標(biāo)注不全或不準(zhǔn)確,這個(gè)機(jī)器學(xué)習(xí)模型的效果就會(huì)打折扣。我們把減少異常標(biāo)注的工作分解一下,在同一條曲線內(nèi)找相似的異常,跨KPI找異常。 KPI相似異常查找是在KPI內(nèi)找異常,運(yùn)維人員標(biāo)注異常,然后算法以標(biāo)注的異常為模塊,在曲線上找出類似的其他的異常,這樣就能減少標(biāo)注開(kāi)銷,例如圖中的紅色部分即為標(biāo)注,輸出為其它類似的異常。常用基本算法包括DTW,MK最佳配對(duì)等。 如果跨KPI,可以先把一個(gè)模塊的各種KPI提前進(jìn)行聚類,在同一個(gè)類別中的某條曲線上進(jìn)行標(biāo)注,那么其他的同類的曲線上的對(duì)應(yīng)位置也為異常。聚類用到的基本算法包括DBSCAN,K-medoids、CLARANS。 聚類是基于曲線的相似性,如果曲線不相似,但是其內(nèi)在有關(guān)聯(lián)導(dǎo)致它們經(jīng)常一起變化,這也能夠找出更多的異常,從而可以作為一個(gè)減少標(biāo)注開(kāi)銷的方法。 這個(gè)是“KPI關(guān)聯(lián)分析”科研問(wèn)題, 其基本算法包括關(guān)聯(lián)分析算法和Granger 因果性分析算法等。 B、故障傳播鏈 另一個(gè)關(guān)鍵因素是故障傳播鏈的構(gòu)建,即A事件發(fā)生會(huì)導(dǎo)致B事件的發(fā)生。如果理清了事件的傳播關(guān)系,就可以構(gòu)成故障傳播圖。上文提到的KPI的關(guān)聯(lián)分析和KPI的聚類都可以用上。下面介紹異常事件的關(guān)聯(lián)關(guān)系和KPI的關(guān)聯(lián)關(guān)系挖掘。 上圖是故障傳播鏈,當(dāng)應(yīng)用層、業(yè)務(wù)層發(fā)生故障的時(shí)候,如果有故障傳播圖,就可以從中找到對(duì)應(yīng)時(shí)間范圍內(nèi)的相關(guān)事件。如果有就沿著傳播鏈繼續(xù)往找,直至找到根因。我們希望能得到這樣的故障傳播圖,但是很多軟件之間的模塊關(guān)系很復(fù)雜,很難描述。另外,剛才提到的調(diào)用關(guān)系,即A模塊調(diào)B模塊,并不代表A發(fā)生異常就會(huì)導(dǎo)致B發(fā)生異常,而是還有很多其他的因素。 通過(guò)機(jī)器學(xué)習(xí)算法挖掘各種關(guān)聯(lián)關(guān)系,再輔以模塊調(diào)用關(guān)系鏈,則構(gòu)建準(zhǔn)確完整的調(diào)用關(guān)系鏈就相對(duì)比較容易了。 挖掘關(guān)聯(lián)關(guān)系包括之前闡述過(guò)的KPI聚類,KPI關(guān)聯(lián)分析,下面我們?cè)僦v述另外的兩個(gè)算法。 先看異常事件的關(guān)聯(lián)關(guān)系。兩個(gè)關(guān)聯(lián)事件是不是在歷史上經(jīng)常一起發(fā)生,比如說(shuō)這個(gè)時(shí)間窗口內(nèi)發(fā)生了這四個(gè)不同的事件,如果說(shuō)經(jīng)常一起發(fā)生,它們就有兩兩對(duì)應(yīng)關(guān)系?,F(xiàn)有文獻(xiàn)中常見(jiàn)的算法有:FP-Growth、Apriori、隨機(jī)森林。 另外就是事件和KPI的關(guān)聯(lián)關(guān)系,比如程序啟動(dòng)的事件,在某個(gè)時(shí)間點(diǎn)程序A啟動(dòng)了,下個(gè)時(shí)間點(diǎn)程序B啟動(dòng)了。在程序A每次啟動(dòng)的時(shí)候CPU利用率就上了一個(gè)臺(tái)階,而B(niǎo)沒(méi)有,所以說(shuō)事件和曲線的關(guān)聯(lián)關(guān)系,還包括先后順序、變化方向。 常用基本算法包括Pearson 關(guān)聯(lián)分析, J-Measure, Two-sample test等。 3、退而求其次 前面我們分解了根因分析問(wèn)題,但是有時(shí)由于數(shù)據(jù)采集不全等原因,完整的根因分析條件不具備,這就要求我們降低要求,“退而求其次”,解決簡(jiǎn)單一些但是同樣有實(shí)際意義的問(wèn)題。 A、智能熔斷 眾所周知,80%的線上故障都是由產(chǎn)品上線或者變更導(dǎo)致的。也就是說(shuō)在這種情況下,運(yùn)維人員自己的操作、上線和變更就是業(yè)務(wù)出問(wèn)題的根因,那么對(duì)于這種根因我們能不能做一些工作呢?答案是肯定的,就是智能熔斷。當(dāng)產(chǎn)品上線時(shí),根據(jù)現(xiàn)有的數(shù)據(jù)判斷業(yè)務(wù)層出現(xiàn)的問(wèn)題是否為該上線操作所導(dǎo)致的。具體實(shí)現(xiàn)的時(shí)候可以用CUSUM,奇異譜變換(SST),DID等算法。 B、異常報(bào)警聚合算法 再換一個(gè)角度,現(xiàn)在有各種監(jiān)控的報(bào)警,如果運(yùn)維人員聚合不準(zhǔn),就無(wú)法決定下一步的操作。因?yàn)楸O(jiān)控的KPI太多,導(dǎo)致異常報(bào)警冗余。我們的算法會(huì)將各種報(bào)警原始數(shù)據(jù)聚合,比如將100個(gè)異常報(bào)警聚合成5個(gè),這樣實(shí)際處理的時(shí)候就會(huì)相對(duì)容易些。具體的算法包括基于服務(wù)、機(jī)房、集群等拓?fù)涞膶哟畏治觯€有基于挖掘的關(guān)系和基于故障傳播鏈的報(bào)警聚合。 C、故障定位算法 最后舉一個(gè)退而求其次的方案。當(dāng)業(yè)務(wù)發(fā)生故障時(shí), 故障定位并不是給出完全的根因,而是能夠大致區(qū)分是哪里的問(wèn)題,輸入是各種各樣的性能指標(biāo),輸出根因所發(fā)出的具體位置。例如去年SIGCOMM 2016微軟提出的基于數(shù)據(jù)中心的故障定位,先用實(shí)驗(yàn)床把所有可能故障都模擬一下,同時(shí)收集各類監(jiān)控指標(biāo)。通過(guò)機(jī)器學(xué)習(xí)建立模型。這個(gè)模型可以根據(jù)實(shí)際發(fā)生的監(jiān)控指標(biāo)的癥狀, 推斷根因的大致位置,以便加速止損。 在相關(guān)文獻(xiàn)中用到的基礎(chǔ)算法包括隨機(jī)森林,故障指紋構(gòu)建,邏輯回歸,馬爾科夫鏈,狄利克雷過(guò)程等方法來(lái)進(jìn)行故障定位。 簡(jiǎn)單小結(jié)一下, 智能運(yùn)維關(guān)鍵技術(shù)落地可以有三種方式。相對(duì)獨(dú)立的算法可以直接落地,依賴其他算法的根因分析可以庖丁解牛,數(shù)據(jù)條件不成熟的可以退而求其次。另外從前面列舉的那么多的算法例子,大家可以看到的確有很多的算法可以應(yīng)用到智能運(yùn)維里面的。工業(yè)界的朋友們可以花一些時(shí)間和精力, 簡(jiǎn)單了解一下這些算法,知道這些算法的輸入和輸出是什么,能解決運(yùn)維中哪些實(shí)際問(wèn)題,以及組合起來(lái)能解決什么問(wèn)題,這樣會(huì)對(duì)更快落地智能運(yùn)維起到事半功倍的效果。 四、總結(jié)與前瞻 智能運(yùn)維本身前景非常光明,因?yàn)樗邆湄S富的數(shù)據(jù)和應(yīng)用場(chǎng)景,將極大提高智能運(yùn)維領(lǐng)域的生產(chǎn)力,也是AI領(lǐng)域尚未充分開(kāi)采的金庫(kù)。智能運(yùn)維需要工業(yè)界和學(xué)術(shù)界的密切合作,但是目前仍只限于一對(duì)一相對(duì)低效的合作,少數(shù)公司和少數(shù)教授的特權(quán)不符合我們大的開(kāi)源開(kāi)放的趨勢(shì)。我們的解決思路就是以科研問(wèn)題為導(dǎo)向, 從日常工作中找到相關(guān)的問(wèn)題,然后把這些問(wèn)題分解定義成切實(shí)可行的科研問(wèn)題, 并匯總成智能運(yùn)維的科研問(wèn)題庫(kù)。同時(shí), 工業(yè)界能夠提供一些脫敏數(shù)據(jù)作為評(píng)測(cè)數(shù)據(jù)集,這樣學(xué)術(shù)界就可以下載數(shù)據(jù),并貢獻(xiàn)算法。我的實(shí)驗(yàn)室NetMan將會(huì)運(yùn)營(yíng)一個(gè)“智能運(yùn)維算法競(jìng)賽”的網(wǎng)站,匯總智能運(yùn)維的科研問(wèn)題庫(kù),提供數(shù)據(jù)下載,并舉辦智能運(yùn)維算法大賽。已經(jīng)有包括美國(guó)eBay公司在內(nèi)的多家公司同意為網(wǎng)站提供脫敏的運(yùn)維數(shù)據(jù)。 在此非常感謝工業(yè)界的各位合作伙伴,也感謝我在清華的團(tuán)隊(duì),NetMan,可以把它認(rèn)為是在智能運(yùn)維算法里面的特種兵部隊(duì)。 最后,與大家共勉:智能運(yùn)維落地, 前景是光明的,道路肯定是曲折的。引用一下我原來(lái)在AT&T的領(lǐng)導(dǎo)Albert Greenberg在2015年SIGCOMM演講的時(shí)候說(shuō)的兩句名言。他說(shuō)別人問(wèn)我:你怎么得了那么多的學(xué)術(shù)界會(huì)議的Test of time獎(jiǎng)(十年前發(fā)的論文,十年后再評(píng)哪篇論文是最好的)的?他說(shuō)很簡(jiǎn)單,··“論文發(fā)表之后再花五年把論文里面的算法變成產(chǎn)品,就證明你這個(gè)東西是好的,就自然得這個(gè)Test of time獎(jiǎng)了”。他的意思就是你要把好的思路、好的算法在應(yīng)用中實(shí)踐出來(lái),并且對(duì)工作量有合理的預(yù)估。他的另外一句名言是“人們往往高估兩年內(nèi)能完成的成果,同時(shí)又往往低估五年內(nèi)能完成的成果。” 意思是如果你看太短的話,很多事情做不成。但是有足夠的耐心,放到四五年的尺度的話,往往能做成很多的事情。 在智能運(yùn)維的領(lǐng)域,我們從去年開(kāi)始來(lái)推動(dòng)智能運(yùn)維算法在實(shí)踐中的落地,我已經(jīng)行動(dòng)了一年了,我們還有四年時(shí)間,我相信只要我們有更多的學(xué)術(shù)界和工業(yè)界的朋友參與進(jìn)來(lái),再加上我們這樣的“智能運(yùn)維算法競(jìng)賽”網(wǎng)站的載體,我相信就像ImageNet曾經(jīng)推動(dòng)深度學(xué)習(xí)、人工智能的復(fù)興一樣,我們一定能推動(dòng)智能運(yùn)維算法在實(shí)踐中更好的落地! 謝謝大家。 |
|
來(lái)自: 海洋ag0dz0xkf9 > 《運(yùn)維》