算法落地探究:智能運(yùn)維遠(yuǎn)沒有說得“智能”
一、智能運(yùn)維現(xiàn)狀
大家對智能問答系統(tǒng)都很熟悉,目前許多APP都有智能問答系統(tǒng)——后臺是一個機(jī)器人,而不是真正的人回答問題。當(dāng)前眾多研究者在對智能問答系統(tǒng)進(jìn)行研究,提出了許多算法和技術(shù),Google Scholar上關(guān)于智能問答系統(tǒng)的文章有30多萬不到35萬篇。但實(shí)際上,智能問答系統(tǒng)遠(yuǎn)沒有達(dá)到真正的智能,回答的結(jié)果時常是答非所問,那么就會造成海量的算法和技術(shù)與差強(qiáng)人意的效果之間的偏差。
智能運(yùn)維到現(xiàn)在大概有六七年的發(fā)展歷程,在此期間智能運(yùn)維算法一直在快速地發(fā)展,包括對性能指標(biāo)的時間序列的數(shù)據(jù)、對日志告警的數(shù)據(jù)以及近兩年對CMDB、調(diào)用鏈等圖的數(shù)據(jù)。算法的類型和效果也在不斷提升,包括指標(biāo)異常檢測、容量預(yù)測、日志聚類、日志日常檢測、告警中的場景挖掘、根因定位等。接下來的內(nèi)容主要涉及指標(biāo)異常檢測、日志智能分析、告警數(shù)據(jù)分析三個類別。
?1、指標(biāo)異常檢測
指標(biāo)異常檢測是一個落地最多的智能運(yùn)維場景,因?yàn)樗鼣?shù)據(jù)容易準(zhǔn)備,效果容易驗(yàn)證,準(zhǔn)確率、召回率的指標(biāo)容易量化。目前許多公司對大規(guī)模指標(biāo)進(jìn)行異常檢測,比如1萬個指標(biāo)、10萬個指標(biāo)。
針對指標(biāo)的異常檢測,研究者提出了大量的異常檢測算法,比如單指標(biāo)、多指標(biāo)檢測,基于統(tǒng)計(jì)、基于深度學(xué)習(xí)的模型,無監(jiān)督、有監(jiān)督的算法,以及近兩年許多公司和機(jī)構(gòu)開源了異常檢測數(shù)據(jù)集和算法。但是,往往在落地的場景中應(yīng)用的效果不盡如人意,主要問題如下:
1)誤報太多
- 設(shè)置閾值嚴(yán),為了消除漏報,往往造成大量的誤報
- 異常數(shù)量多,運(yùn)維人員難以處理,不得不忽略所有的指標(biāo)異常告警
2)模型/參數(shù)難以設(shè)置
- 不同類型的指標(biāo),往往適合不同類型的模型和參數(shù)
- 無法單獨(dú)設(shè)置模型和參數(shù),進(jìn)行分類則效果不佳
3)缺乏有效的反饋和修正機(jī)制
- 缺乏問題發(fā)現(xiàn)能力,難以對指標(biāo)異常進(jìn)行類型、主機(jī)、時間段、業(yè)務(wù)等方面的展示和分析,難以對異常進(jìn)行交互式探索,因此無法判斷異常是否應(yīng)該報
- 缺乏基于反饋的模型調(diào)整能力,難以應(yīng)對“這個不是我們認(rèn)為的異常,后續(xù)檢測中不要再報了”的個性化需求
?2、日志智能分析
目前,大量企業(yè)上線了日志實(shí)時聚類和基于日志的異常檢測,主要解決了人工難以處理海量日志數(shù)據(jù)、基于規(guī)則的方法維護(hù)性差的問題。典型場景對海量日志做實(shí)時聚類,再做基于日志的異常檢測,比如變量取值異常、模板數(shù)量異常、語義異常等,但日志智能分析實(shí)踐同樣存在若干問題。
1)模板質(zhì)量難以有效評估
- 日志聚類完之后,在將其聚到若干模板中時,模板質(zhì)量難以有效評估,尤其是在實(shí)施過程或上線過程中,模板數(shù)量大,逐個人工判斷耗時太長,可能運(yùn)維人員沒有充足的時間逐個人工判斷
- 不同的應(yīng)用目標(biāo)對模板的要求不同,可能做某類型的日志異常檢測時該模板不應(yīng)該被泛化,但做另外一件事情可能就需要泛化,模板是否需要被泛化是一件非常主觀的事情
2)缺乏有效的反饋和修正機(jī)制
- 缺乏基于反饋的模板調(diào)整能力,難以應(yīng)對“這種模板應(yīng)該根據(jù)這個變量拆分”、“這個變量應(yīng)該被泛化”之類的個性化需求
- 運(yùn)維專家和算法人員的溝通難,運(yùn)維專家與算法團(tuán)隊(duì)之間隔著實(shí)施團(tuán)隊(duì),反饋鏈條長,且不是直接反饋
?3、告警數(shù)據(jù)分析
近年來告警相關(guān)項(xiàng)目快速增長,每天有成千上萬的告警,由于告警數(shù)量太多,運(yùn)維人員難以有效處理和派單,因此通過算法進(jìn)行告警壓縮、場景挖掘、根因定位越來越受重視。在告警智能處理中存在兩個典型問題:
1)告警模板提取效果不佳
- 告警數(shù)據(jù)更為靈活多變,不同運(yùn)維人員的告警描述方式存在差異
- 包含大量中文,告警模板提取效果不盡如人意
2)根因定位效果欠佳
- CMDB質(zhì)量有待提高,可能存在系統(tǒng)變更但CMDB沒有及時變更到最新場景的情況
- 可能真正的故障原因不存在于告警數(shù)據(jù)中,無法進(jìn)行根因定位
- 標(biāo)簽數(shù)據(jù)缺失,一方面故障數(shù)量少,另一方面企業(yè)由于涉及隱私等原因不愿意給予標(biāo)簽
二、問題分析
我們在前面對于智能運(yùn)維的現(xiàn)狀和具體的類別及相關(guān)問題進(jìn)行了梳理,那么接下來是我個人的一些思考。我認(rèn)為算法落地效果不盡如人意有兩個深層次原因:
?1、算法需要不斷迭代優(yōu)化
我們時常認(rèn)為智能運(yùn)維的算法是開箱即用,但其實(shí)效果遠(yuǎn)不是如此,算法需要不斷迭代優(yōu)化。算法最開始的時候一般是一個通用算法,到具體在企業(yè)部署之后,它一定會成為一個定制化的算法。因?yàn)閷τ诿恳粋€具體的項(xiàng)目,算法需要和運(yùn)維數(shù)據(jù)、業(yè)務(wù)特點(diǎn)、運(yùn)維目標(biāo)等深度融合,需要不斷進(jìn)行打磨和適配。
1)算法本身:普遍缺乏反饋修正能力
對于“這個異常我不需要,后續(xù)檢測中不要再報了”、“這兩個模板應(yīng)該合并掉,變量不能被泛化”之類的反饋,當(dāng)前的模型尤其是深度學(xué)習(xí)模型很難有效吸收,其中主要是兩種能力的缺失:
- 發(fā)現(xiàn)問題的能力。比如說我們一天報2000個異常,能否有半小時或一小時的時間將這2000個異常過一遍,判斷其中哪些異常應(yīng)該報,哪些不應(yīng)該報,目前很少有人能夠在短時間內(nèi)做到這點(diǎn)。
模型自動修正能力。比如給了很多“這個要報,那個不要報”之類的很多反饋,模型是否能夠很好地適應(yīng),因?yàn)檫@個適應(yīng)其實(shí)是個百分百的適應(yīng),有的可能一個都不要報,有些是一定要報出來,這種對于模型也是比較難的。
2)實(shí)施過程:運(yùn)維專家和算法人員的脫離
對于算法而言,最重要的是標(biāo)簽數(shù)據(jù)和對算法結(jié)果的快速反饋,但是相關(guān)領(lǐng)域的專家可能熟悉機(jī)理卻不熟悉算法,由于溝通鏈條長、溝通成本高,運(yùn)維專家和算法人員在一定程度上是脫離的。
?2、系統(tǒng)故障本身是超低頻事件
系統(tǒng)故障本身是一個超低頻的事件,嚴(yán)重的故障基本可能只出現(xiàn)一次,并且會被快速解決,不可能再出現(xiàn)。而算法需要基于歷史數(shù)據(jù)學(xué)規(guī)律進(jìn)行優(yōu)化提升,如果之前發(fā)現(xiàn)的故障后來很可能不再出現(xiàn)了,那么這其實(shí)是一個悖論。
我們前面也有提到完全依靠算法來實(shí)現(xiàn)自動化運(yùn)維,至少在目前階段我覺得其實(shí)是不現(xiàn)實(shí)的,我們僅僅做異常檢測、日期類都沒有做得非常的好,那么我們相信現(xiàn)在算法能達(dá)到自動化運(yùn)維嗎?我覺得更現(xiàn)實(shí)的目標(biāo)是將算法作為一種讓運(yùn)維更高效的輔助手段。
1)數(shù)據(jù)量太大,用算法來提高效率
- 對每天幾百TB的日志自動提取模板和變量
- 對上萬的指標(biāo)自動進(jìn)行異常檢測
2)在某些場景下,用算法來提高精度
因?yàn)樵谝蚬茢嗬镉行╂湕l比較長,需要考慮的方面比較多,人的思考其實(shí)并沒有那么發(fā)達(dá),所以算法在這些方面是可以幫助提高精度的。
3)作為一種定位故障過程的輔助手段,幫助運(yùn)維人員靈活快速地查詢和探索數(shù)據(jù)
這是一種非常重要的能力,因?yàn)樵诤芏囗?xiàng)目里,算法結(jié)果的分析工作非常勞累辛苦。
4)算法作為一種積累知識的方式,構(gòu)建知識圖譜
三、探索工作
?1、如何高效地支持反饋
如果只讓運(yùn)維專家給10個異常/10個模板打標(biāo)簽,應(yīng)該怎么做?
1)快速發(fā)現(xiàn)問題的能力
首先可以通過異常置信度、日志模板置信度從2000個異常中選擇10個異常,然后通過異常立方體更加系統(tǒng)的能力對異常進(jìn)行交互式探索,使異??梢暬?/p>
2)模型自動修正的能力
當(dāng)我們希望將一個Excel或CSV的記錄人的電話、傳真信息的表格變成結(jié)構(gòu)化數(shù)據(jù)進(jìn)行處理時,我們可以通過算法進(jìn)行自動轉(zhuǎn)化。通過我們給的少量樣本,算法能夠自動識別我們的目標(biāo),從而達(dá)成這個目標(biāo),這就是基于樣例的算法?;跇永乃惴ㄔ谥悄苓\(yùn)維領(lǐng)域中同樣大有可為,另外還有一種方法是小樣本算法,通過給定少量標(biāo)簽或案例快速達(dá)成目標(biāo)是我們正在進(jìn)行的嘗試。
?2、作為輔助手段的數(shù)據(jù)探索技術(shù)
1)基于自然語言的問答系統(tǒng)
人可以問類似以下自然語言的問題,能夠自動轉(zhuǎn)成SQL并出結(jié)果,具有高易用性,便于運(yùn)維人員進(jìn)行個性化數(shù)據(jù)探索。
- 在2019/11/28 11:25發(fā)生突增異常的指標(biāo)有哪些?
- A應(yīng)用發(fā)生異常次數(shù)最多的主機(jī)是哪臺?
- B應(yīng)用告警次數(shù)最多的告警種類是什么?
- 最近一周內(nèi)存使用率最高的十臺主機(jī)是哪些?
- 最近十天發(fā)生異常次數(shù)最多的應(yīng)用是什么?
- 最近一周內(nèi)失敗率最高的應(yīng)用是哪個?
2)基于時間關(guān)聯(lián)的復(fù)雜查詢
用于事件關(guān)聯(lián)的快速發(fā)現(xiàn),如下圖所示的HDFS日志,我們想查詢其中三個模板是否經(jīng)常一起出現(xiàn),PLQ查詢能夠更加簡潔高效,SQL查詢則會更加復(fù)雜。
3)基于拖拽式的分析流程實(shí)現(xiàn)
- 便于領(lǐng)域?qū)<医Y(jié)合不同分析算法搭建分析流程
- 融合了異常檢測、聚類、場景挖掘等多種算法
- 支持不同語言開發(fā)的算法
- 支持輸入數(shù)據(jù)格式的智能學(xué)習(xí)
四、總結(jié)
智能運(yùn)維中的算法正在發(fā)揮越來越大的作用,但同時算法落地仍有大量問題需要解決。算法不能一蹴而就,需要有持續(xù)優(yōu)化的能力。不妨將算法作為一種運(yùn)維的輔助手段,使運(yùn)維人員也能靈活地分析數(shù)據(jù),在運(yùn)維過程中使其變得更高效。
作者:王鵬 復(fù)旦大學(xué) 教授/博導(dǎo)
復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,教授,博導(dǎo)。主要研究興趣包括:工業(yè)物聯(lián)網(wǎng)大數(shù)據(jù)、智能運(yùn)維等。2012年獲得教育部自然科學(xué)二等獎(第三完成人)。主持或主要參與科技部重點(diǎn)研發(fā)計(jì)劃、國家青年973、自然科學(xué)重點(diǎn) 面上基金、上海市科委、上海市經(jīng)信委的多個項(xiàng)目,以及華為、微軟、IBM等企業(yè)的資助項(xiàng)目。在數(shù)據(jù)庫領(lǐng)域頂級國際期刊和會議SIGMOD、VLDB、ICDE、TKDE等發(fā)表論文40多篇。擔(dān)任眾多國際學(xué)術(shù)會議的程序委員會委員,包括SIGKDD、ICDE、DASFAA、WAIM等。國際學(xué)術(shù)期刊VLDB Journal、TKDE、KIS等的審稿人。