清華裴丹:我在智能運維科研領域的一些思考


https://www.sohu.com/a/166627757_262549

前言

中國應用性能管理行業盛宴—2017中國應用性能管理大會(簡稱APMCon 2017)於8月10日至11日在北京新雲南皇冠假日酒店隆重召開。本屆APMCon是由聽雲、極客邦和InfoQ聯合主辦,作為國內APM領域最具影響力的技術大會,本次大會以“驅動應用架構優化與創新”為主題,致力於推動APM在國內的成長與發展。

清華大學計算機系副教授、智能運維算法專家—裴丹於APMCon 2017大會主論壇發表了題為《智能運維中的科研問題》的演講,現場解讀了在智能運維領域,工業界與學術界間合作的重要性以及智能運維如何落地的思路。

以下為演講實錄:

裴丹:大家好,我是裴丹。今天非常榮幸有此機會跟大家分享一下我在智能運維科研領域的一些思考。我做了十幾年的運維,之前在AT&T、百度以及其它公司成功地解決了一系列運維難題。從去年開始,我着手於將智能運維中的算法在更廣泛的范圍落地。當然,在這個過程中我遇到了一些挑戰,也有了一些思考。所以,今天主要跟大家分享一下我的一些思考結果 。

為什么有這樣一個題目(《智能運維中的科研問題》)呢?為什么在這個場合講科研問題呢?這其實是我思考的結果。我認為,在目前這個階段,智能運維科研想要繼續往前推進並取得更好的成果,我們需要把智能運維里的一些關鍵算法定義好、分解好。這是我們智能運維落地的一個關鍵步驟和手段。

我今天報告的主旨主要有兩點。第一,現在智能運維很熱門、很火爆,大家都感興趣。據我總結,智能運維落地的核心挑戰是:從工業界的角度,我們有數據、有應用,但是缺乏一些算法和經驗;從學術界的角度,我們有不少理論算法,但是缺乏實際的數據以支持科學研究,也不熟悉運維的場景。

盡管我已經工業界和學術界的合作方面有了很多實踐,但我切身感受到,相對來說,這種一對一的交流效率比較低,且見效慢,特別不符合當前的開源開放的趨勢。

我的解決思路是,以科研問題為導向,將我們在智能運維領域需要解決的一系列挑戰性的問題,定義成切實可行的科研問題。這樣,就有明確的輸入和輸出。在這種情況下,如果我們的企業能夠擁抱開源開放的趨勢,把數據開源出來,就能讓學術界更多的研究人員參與到研究智能運維有關的算法中來——這就是我今天演講的主旨。

40分鍾的演講結束后,如果大家能夠記住這幾點,那么我的演講就是成功的。

一、智能運維的發展歷程

我們大家都知道,在運維發展的過程中,最早出現的是手工運維;在大量的自動化腳本產生后,就有了自動化的運維;后來又出現了DevOps和智能運維。在運維的過程中,涉及到的步驟可以概括為:產生海量的監測日志,進行分析決策,並通過自動化的腳本進行控制。

運維的發展過程,主要是分析決策步驟發生了變化:起初,由人工決策分析;后來,在采集數據的基礎上,使用自動化的腳本進行決策分析;最后,用機器學習方法做決策分析。

根據Gartner Report,智能運維相關的技術產業處於上升期。2016年,AIOps的部署率低於5%,Gartner預計2019年AIOps的全球部署率可以達到25%。所以,AIOps的前景一片光明。

如果AIOps普遍部署之后會是什么樣的呢?現在做運維的同學們會變成怎樣?

從機器的角度,基礎性、重復性的運維工作都交給計算機來做了;同時,機器通過機器學習算法為復雜的問題提供決策的建議,然后向運維專家學習解決復雜問題的思路。

從運維專家的角度,運維專家主要處理運維過程中的難題,同時基於機器建議給出決策和訓練機器徒弟。運維工程師將逐漸轉型為大數據工程師,主要負責開發數據采集程序以及自動化執行腳本,負責搭建大數據基礎架構,同時高效實現基於機器學習的算法。

機器學習科學家主要負責AI的落地應用。智能運維領域相對於其它AI應用領域的優勢在於,我們不僅有大量的應用數據,而且有實際的應用場景和部署環境。因此,人工智能在計算機視覺、自然語言理解、語音識別之外,又多了一個落地應用——這是一座尚未開采的金礦。

1、智能運維科研門檻高-工業界

一般有“前景光明”、“前途光明”這些詞的時候,下面跟着的就是“道路曲折”。實際上,智能運維是一個門檻很高的工作。為什么呢?因為智能運維需要三方面的知識:

第一,我們要熟悉應用的行業,比如說互聯網、電信或者相對傳統的行業,如金融、電力等等。

第二,我們要熟悉運維相關的場景,包括異常檢測、故障預測、瓶頸分析、容量預測等。

第三,雖然工業界熟悉運維行業和場景,熟悉生產實踐中的挑戰,也有數據。但是,工業界並不熟悉整個智能運維中最重要的部分——如何把實際問題轉化為算法問題(后面會講到如何把實踐中的難題分解成多個算法並逐個解決)。同時,工業界也不太熟悉查閱科研文獻,特別是跨行業的文獻。因此,智能運維是一個需要三方面領域知識結合的高門檻領域。

所以,我想通過自己的一些努力,來降低工業界部署智能運維的門檻。比如,我們清華的實驗室運營了一個微信公眾號,叫做“智能運維前沿”。我們基本上兩三周推出一篇公眾號文章,介紹世界范圍內智能運維的前沿進展。這是“智能運維前沿”公眾號關注人數的增長情況。我們有一篇公眾號文章被閱讀了超過2000次,轉載之后又有5000次閱讀。這是我們共同努力的結果。

在智能運維文獻里有幾十種常見的基礎算法。但是,工業界並不熟悉這些算法。所以,我們利用微信公眾號介紹這些算法。下面我將介紹一個例子——通過機器學習方法提升視頻流媒體的用戶體驗和觀看時長。

這是一位CMU教授的系列文章。這位教授在一個做視頻分發的創業公司做了若干工作。2011年,他在學術界發表了一篇文章。這一工作比較簡單,主要為了提升用戶觀看流媒體的體驗,其中用到了相關分析、線性回歸、信息增益等簡單算法。

2013年,該教授基於網絡行為數據和性能數據,使用決策樹方法預測用戶的觀看時長。該教授於2017年發表了一篇新的文章,將視頻質量的實時優化問題轉化為一種基礎的強化學習問題,並使用上限置信區間算法有效解決了這一問題。

2、智能運維科研門檻高-學術界

在學術界中,很少有人做智能運維方向。這是因為,對於學術界來說,進入到智能運維這一科研領域具有很強的挑戰性。為什么呢?

雖然學術界研究人員的算法能力相對較強,但是他們往往不熟悉行業和運維領域的相關知識。而智能運維處於三個領域的交叉部分。這就導致智能運維的門檻比較高,需要花大量的時間和精力才能進入智能運維領域。

前面講了如何降低工業界進入智能運維的門檻。同時,我也做了一些工作,以降低學術界進入智能運維領域的門檻。例如,我應邀在《中國計算機學會通訊》上發表文章,向學術界的同行介紹智能運維中的科研問題。

但是,僅僅宣傳是遠遠不夠的,我們還要實踐。去年,我在第一屆APMCon會議上做了報告,講述了當時和百度合作的三個案例,包括異常檢測、瓶頸分析以及智能熔斷。

這種公開的宣傳給我自己帶來了很多新的合作。除了與百度的合作,我們清華實驗室相繼與滴滴、搜狗、阿里巴巴、騰訊簽署了正式的合作協議。

這驗證我的在去年我在APMCon上演講的觀點:工業界可以獲得算法層面的深度支持,學術界可以獲得現實世界的前沿問題和數據,有利於發表論文和申請國家項目。

二、工業界-學術界合作

1.0:一對一交流合作

但是,現在這種工業界跟學術界的合作方式,還處於1.0階段,即一對一的交流。在這個過程中,我們遇到了諸多挑戰。

1、交流合作效率低,見效慢。比如說我是這個教授,我跟A公司討論一下,再跟B公司討論一下。很多情況下,不同公司遇到的問題都是類似的,比如異常檢測。

但是,我需要跟每個公司梳理一遍這些問題。C公司可能不知道我,就找另外一位教授,他依然需要梳理這些問題。這就大大降低了交流合作的效率。我們知道,科研最難的部分,就是把一個實踐中的問題定義好。當定義好問題之后,只要數據准備好,其他問題都可以迎刃而解。

2、智能運維算法不幸成了特權。因為很少有教授願意去做這種一對一交流,而願意或有渠道和學校科研人員溝通交流的公司也不多。這就導致,在國外,只有少數大公司和教授才能合作。比如,目前只有Google、 Microsoft、Linkedin、Facebook、雅虎等大公司發表過智能運維有關的論文。

3、涉及知識產權,不符合開源大趨勢。因為一對一的合作需要簽署涉及知識產權的協議,不符合開源的大趨勢。

2.0:開源開放

1對1交流效率低,那具體應該怎么做呢?我們希望擁抱開源開放的文化,形成工業界與學術界合作的2.0。

開源開放的大趨勢已經對工業界和學術界產生了巨大的影響。大家耳熟能詳的Hadoop、Ecosystem、TensorFlow等,都是開源開放的產物。

在算法層面,當前有arXiv共享算法(論文)平台,和Github代碼共享;在數據層面,ImageNet等數據共享平台對機器學習算法的研究起到了巨大的推動作用;在計算能力層面,各大公司都建立了AI雲;在人才層面,我們也可以看到,學術界和工業界的人才流動比原來順暢多了。

所以,我們的基本思路是,希望能夠建立智能運維的問題庫。具體的,我們嘗試把運維的常見問題梳理出來,並存儲到一個問題庫里。

這樣的話,對於缺乏智能運維背景知識的科研人員,在問題的輸入、輸出、數據集齊全的前提下,可以很容易地着手解決問題庫中的科研問題。對於做運維實踐的工業界的同學們,當遇到實際的問題時,可以查詢問題庫中的解決方案。

這一思路受到了斯坦福教授李飛飛的影響。她最近在宣傳普世化AI的思路——讓所有人都可以使用AI。李飛飛教授建立的 ImageNet上面有1000多萬張圖片的分類標注數據。在2012年Hinton教授提出了一種基於CNN的圖片分類算法,取得比以往最好結果高好幾個百分點的結果, 引起了深度學習的復興。

現在,她同時兼任Google機器學習部門的負責人。她在宣傳普世化AI思路時,提到普世化有四個基本點:計算能力、數據、算法、人才。這四個基本點跟我們要落地智能運維所遇到的挑戰是一樣的。 因為我們也需要用到機器學習和AI的技術來解決智能運維中的挑戰性問題。

除了問題庫,學術界還需要數據集。此外,工業界最好能提供雲計算資源,讓學術界提供的算法在雲端跑。數據公開后,學術界可以公布訓練好的算法,工業界就可以直接使用這些算法。

在人才方面,工業界可以與學術界合作。同時,那些參與我們的智能運維算法大賽且排名靠前的學生,也可以成為工業界的人才儲備。最終,我們希望所有的公司都能用上最好的智能運維算法。

三、分解定義智能運維中的科研問題

下面分解定義一下智能運維中的科研問題。由於時間關系,我只能概述算法的特性。

為什么我們要定義科研問題呢?對於科研工作者來說,類似Gartner Report 中列舉的智能運維問題太寬泛。首先,科研問題需要清晰的輸入,並且數據是可以獲得的;其次,科研問題要有清晰的輸出,並且輸出的目標要切實可行;再次,科研問題要有高層面的技術路線圖,以及參考文獻;最后,非智能運維領域的學術界要能理解該科研問題。

這是我們已經梳理出來的一些科研問題。我將用后面的時間來解釋一下這些算法。這些算法分為三種種:第一種算法是相對獨立的基礎模塊,面臨的挑戰較少,可以直接落地;第二種算法依賴於其他的算法,我們需要把這些算法分解成一個個切實可行的解決問題。 第三種是把非常難的問題降低要求和難度,“退而求其次”。

1、基礎模塊

先講一下基礎模塊。基礎模塊是相對獨立並能夠落地的。

A、KPI瓶頸分析算法

我介紹的第一個基礎模塊算法是KPI瓶頸分析算法。在智能運維領域和APM領域,我們收集了很多的數據,數據的形式有KPI時間序列、日志等。假如打開一個頁面的響應時間(首屏時間)是我們的KPI,當首屏時間不理想、不滿意時,我們希望能夠找出哪些條件的組合導致了首屏時間不理想。這就是我們要解決的KPI瓶頸分析的定義。

該問題的輸入為一張又寬又長的表,其中包含KPI和影響到KPI的多維屬性。 輸出為可能影響KPI性能的屬性組合。這一科研問題具有廣泛的應用場景,包括首屏時間、應用加載時間、軟件報錯、視頻傳輸用戶體驗等。在具體應用時,這一科研問題面臨着諸多挑戰:搜索的空間巨大;不屬性之間可能存在關聯關系,導致用簡單的分析方法是不可行的。

KPI瓶頸分析的常用基礎算法有:決策樹、聚類樹(CLTree)、層次聚類。

B、故障預測算法

我介紹的第二個基礎模塊算法,是我們最近跟百度系統部合作的一個案例——交換機故障預測。在交換機故障之前,我們可以從交換機日志中提取一些預示故障的信號。

如果找到這些信號,我們就可以提前兩小時預測出交換機故障。故障預測的應用場景還包括硬盤故障預測、服務器故障預測等,使用到的算法包括隱式馬爾科夫模型、支持向量機,隨機森林等。

在具體應用時,故障預測面臨着一些挑戰。訓練故障預測模型的數據需要足夠多,但往往實踐中的故障案例比較少。雖然日志量很大,但日志中的有益信息相對較少。我們已經實現了切實可行的系統,且已經在百度運行。

2、庖丁解牛

當我們應用層出現問題的時候,我們希望找到問題的原因。這里要解決的問題都描述過了,常用的根因分析算法有基於故障傳播鏈的、有基於概率圖模型的。這里我們對基於故障傳播鏈的的思路來庖丁解牛。

假如說我們有這樣的故障傳播鏈,同時又對事件有很好的監測和准確的報警,那根因的分析就簡單了。因為只需要順着故障傳播鏈各個報警找,找到最后一個就是根因。這其中有兩個關鍵的步驟,一個是KPI異常檢測,另一個是故障傳播鏈,下面會詳細介紹這兩部分。

A、異常檢測

首先是異常檢測,很多算法是基於KPI的趨勢預測的,還有一些算法是基於機器學習的,機器學習的算法需要有標注。而標注會給運維人員帶來很多開銷,所以能不能做一些工作減少標注的開銷呢?

這其中就包括相似異常的查找,運維人員標一個異常后,能不能自動地把相似的、相關的異常都找出來? 以上是對異常檢測問題的簡單分解,后面會更詳細的說明。

異常檢測的問題定義很簡單,就是對於這樣的隨着時間有周期性變化的KPI曲線,當它發生異常的時候能夠快速准確的報警,它的常見的算法有:基於窗口,基於預測,基於近似性,基於隱式馬爾可夫模型,也有機器學習,集成學習,遷移學習,深度學習,深度生成模型等等。

異常檢測所面對的挑戰就是KPI種類各異,如果基於趨勢預測算法,調整算法參數費時費力,同時需要人工標注,人工標注也可能不准確。

我們再分解一下,剛剛提到了異常檢測的一種思路是基於KPI趨勢預測。KPI趨勢預測就是通過時序數據的算法能預測出來KPI將來一段時間是什么樣的,取什么值,常見的算法有ARIMA、EWMA、Holt-Winters、時序數據分解、RNN等。主要挑戰包括突發事件的影響、節假日的影響、數據不規則的影響,最重要的就是大家對異常的定義不一樣,會有主觀的因素,最后導致這些算法很難調。

異常檢測的另外一個思路基於機器學習來做, 但是這種方法通常都需要標注,而標注是需要消耗人力資源的。並且如果標注不全或不准確,這個機器學習模型的效果就會打折扣。我們把減少異常標注的工作分解一下,在同一條曲線內找相似的異常,跨KPI找異常。

KPI相似異常查找是在KPI內找異常,運維人員標注異常,然后算法以標注的異常為模塊,在曲線上找出類似的其他的異常,這樣就能減少標注開銷,例如圖中的紅色部分即為標注,輸出為其它類似的異常。常用基本算法包括DTW,MK最佳配對等。

如果跨KPI,可以先把一個模塊的各種KPI提前進行聚類,在同一個類別中的某條曲線上進行標注,那么其他的同類的曲線上的對應位置也為異常。聚類用到的基本算法包括DBSCAN,K-medoids、CLARANS。

聚類是基於曲線的相似性,如果曲線不相似,但是其內在有關聯導致它們經常一起變化,這也能夠找出更多的異常,從而可以作為一個減少標注開銷的方法。 這個是“KPI關聯分析”科研問題, 其基本算法包括關聯分析算法和Granger 因果性分析算法等。

B、故障傳播鏈

另一個關鍵因素是故障傳播鏈的構建,即A事件發生會導致B事件的發生。如果理清了事件的傳播關系,就可以構成故障傳播圖。上文提到的KPI的關聯分析和KPI的聚類都可以用上。下面介紹異常事件的關聯關系和KPI的關聯關系挖掘。

上圖是故障傳播鏈,當應用層、業務層發生故障的時候,如果有故障傳播圖,就可以從中找到對應時間范圍內的相關事件。如果有就沿着傳播鏈繼續往找,直至找到根因。

我們希望能得到這樣的故障傳播圖,但是很多軟件之間的模塊關系很復雜,很難描述。

另外,剛才提到的調用關系,即A模塊調B模塊,並不代表A發生異常就會導致B發生異常,而是還有很多其他的因素。 通過機器學習算法挖掘各種關聯關系,再輔以模塊調用關系鏈,則構建准確完整的調用關系鏈就相對比較容易了。

挖掘關聯關系包括之前闡述過的KPI聚類,KPI關聯分析,下面我們再講述另外的兩個算法。

先看異常事件的關聯關系。兩個關聯事件是不是在歷史上經常一起發生,比如說這個時間窗口內發生了這四個不同的事件,如果說經常一起發生,它們就有兩兩對應關系。現有文獻中常見的算法有:FP-Growth、Apriori、隨機森林。

另外就是事件和KPI的關聯關系,比如程序啟動的事件,在某個時間點程序A啟動了,下個時間點程序B啟動了。在程序A每次啟動的時候CPU利用率就上了一個台階,而B沒有,所以說事件和曲線的關聯關系,還包括先后順序、變化方向。 常用基本算法包括Pearson 關聯分析, J-Measure, Two-sample test等。

3、退而求其次

前面我們分解了根因分析問題,但是有時由於數據采集不全等原因,完整的根因分析條件不具備,這就要求我們降低要求,“退而求其次”,解決簡單一些但是同樣有實際意義的問題。

A、智能熔斷

眾所周知,80%的線上故障都是由產品上線或者變更導致的。也就是說在這種情況下,運維人員自己的操作、上線和變更就是業務出問題的根因,那么對於這種根因我們能不能做一些工作呢?答案是肯定的,就是智能熔斷。

當產品上線時,根據現有的數據判斷業務層出現的問題是否為該上線操作所導致的。具體實現的時候可以用CUSUM,奇異譜變換(SST),DID等算法。

B、異常報警聚合算法

再換一個角度,現在有各種監控的報警,如果運維人員聚合不准,就無法決定下一步的操作。因為監控的KPI太多,導致異常報警冗余。我們的算法會將各種報警原始數據聚合,比如將100個異常報警聚合成5個,這樣實際處理的時候就會相對容易些。

具體的算法包括基於服務、機房、集群等拓撲的層次分析,還有基於挖掘的關系和基於故障傳播鏈的報警聚合。

C、故障定位算法

最后舉一個退而求其次的方案。當業務發生故障時, 故障定位並不是給出完全的根因,而是能夠大致區分是哪里的問題,輸入是各種各樣的性能指標,輸出根因所發出的具體位置。

例如去年SIGCOMM 2016微軟提出的基於數據中心的故障定位,先用實驗床把所有可能故障都模擬一下,同時收集各類監控指標。通過機器學習建立模型。這個模型可以根據實際發生的監控指標的症狀, 推斷根因的大致位置,以便加速止損。

在相關文獻中用到的基礎算法包括隨機森林,故障指紋構建,邏輯回歸,馬爾科夫鏈,狄利克雷過程等方法來進行故障定位。

簡單小結一下, 智能運維關鍵技術落地可以有三種方式。相對獨立的算法可以直接落地,依賴其他算法的根因分析可以庖丁解牛,數據條件不成熟的可以退而求其次。

另外從前面列舉的那么多的算法例子,大家可以看到的確有很多的算法可以應用到智能運維里面的

。工業界的朋友們可以花一些時間和精力, 簡單了解一下這些算法,知道這些算法的輸入和輸出是什么,能解決運維中哪些實際問題,以及組合起來能解決什么問題,這樣會對更快落地智能運維起到事半功倍的效果。

四、總結與前瞻

智能運維本身前景非常光明,因為它具備豐富的數據和應用場景,將極大提高智能運維領域的生產力,也是AI領域尚未充分開采的金庫。智能運維需要工業界和學術界的密切合作,但是目前仍只限於一對一相對低效的合作,少數公司和少數教授的特權不符合我們大的開源開放的趨勢。

我們的解決思路就是以科研問題為導向, 從日常工作中找到相關的問題,然后把這些問題分解定義成切實可行的科研問題, 並匯總成智能運維的科研問題庫。同時, 工業界能夠提供一些脫敏數據作為評測數據集,這樣學術界就可以下載數據,並貢獻算法。

我的實驗室NetMan將會運營一個“智能運維算法競賽”的網站,匯總智能運維的科研問題庫,提供數據下載,並舉辦智能運維算法大賽。已經有包括美國eBay公司在內的多家公司同意為網站提供脫敏的運維數據。

在此非常感謝工業界的各位合作伙伴,也感謝我在清華的團隊,NetMan,可以把它認為是在智能運維算法里面的特種兵部隊。

最后,與大家共勉:智能運維落地, 前景是光明的,道路肯定是曲折的。引用一下我原來在AT&T的領導Albert Greenberg在2015年SIGCOMM演講的時候說的兩句名言。他說別人問我:你怎么得了那么多的學術界會議的Test of time獎(十年前發的論文,十年后再評哪篇論文是最好的)的?他說很簡單,··“論文發表之后再花五年把論文里面的算法變成產品,就證明你這個東西是好的,就自然得這個Test of time獎了”。

他的意思就是你要把好的思路、好的算法在應用中實踐出來,並且對工作量有合理的預估。他的另外一句名言是“人們往往高估兩年內能完成的成果,同時又往往低估五年內能完成的成果。” 意思是如果你看太短的話,很多事情做不成。但是有足夠的耐心,放到四五年的尺度的話,往往能做成很多的事情。

在智能運維的領域,我們從去年開始來推動智能運維算法在實踐中的落地,我已經行動了一年了,我們還有四年時間,我相信只要我們有更多的學術界和工業界的朋友參與進來,再加上我們這樣的“智能運維算法競賽”網站的載體,我相信就像ImageNet曾經推動深度學習、人工智能的復興一樣,我們一定能推動智能運維算法在實踐中更好的落地! 謝謝大家。

大會PPT下載鏈接:

https://pan.baidu.com/s/1nvG9zV7 密碼: p3ti


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM