張圣林
南開大學軟件學院副教授、博士生導師
第六屆CCF國際AIOps挑戰賽程序委員會主席
在ATC、WWW、VLDB、KDD、SIGMETRICS等國際會議和JSAC、TC、TSC等國際期刊發表高水平論文50余篇。主持國家自然科學基金項目2項,橫向項目13項(與華為、字節跳動、騰訊等合作)。獲ISSRE 2023/2018最佳學術論文獎、清華大學優秀博士學位論文、華為“最佳技術合作教授”、南開大學“良師益友”、麒麟軟件“校企合作突出貢獻”獎、天津市科技進步一等獎等榮譽。擔任CCF A/B類國際會議程序委員會委員十余次。中國計算機學會高級會員,YOCSEF天津AC副主席,互聯網專委、軟件工程專委、服務計算專委執行委員。
論文:
Assess and Summarize: Improve Outage Understanding with Large Language Models(ESEC/FSE 2023)
本文為南開大學軟件學院副教授張圣林在論文閃電分享環節的演講內容整理。
感謝各位嘉賓對AIOps挑戰賽和研討會的大力支持,今天我將分享近期我們團隊和微軟合作基于大語言模型提高對故障理解的工作。
什么是云服務故障?
當今社會,我們正處在數字化時代,云服務對我們的生產生活至關重要。國內和國外涌現出一批優秀的云服務供應商:亞馬遜的AWS、微軟的Azure、谷歌云、阿里云、騰訊云等。它們為我們提供了各種各樣的服務,讓我們的生活更加便利。
但是,近期接連不斷的爆出多家云服務公司出現故障的事件,當故障發生之后,一個云數據中心或整個地區的基本服務(如存儲、計算能力或中間件)中斷,帶來了巨大的經濟損失;用戶體驗下降,造成客戶丟失。企業和個人都受到了波及,大家應該是感同身受。
當云故障發生之后,我們首先需要確認故障影響了哪些組件。只有確定了被影響組件才能夠做故障規避,把這部分組件進行隔離。
以上圖為例,當一個存儲服務的故障發生之后,會導致數據庫指標出現增長,Web App性能出現下降,進而導致用戶體驗降低。從“T1”時刻開始,我們可以確認這是一個故障了,因為它影響用戶體驗,并且造成了很多事件發生。
故障發生之后我們需要花一段時間總結故障產生的原因,也就是圖片中“T2”時刻,我們需要寫故障摘要,把整個故障的摘要信息告訴其他的團隊。
在此之前,故障摘要的生成是通過人工的方式去完成的,費時費力且容易出錯。微軟在這方面做了一些事件聚合的嘗試工作,但是把事件聚合完了之后,還是需要運維工程師去人工查看。這里有兩個挑戰:首先,需要運維工程師判斷哪些信息是有用的。其次,需要總結領域特定的、與云相關的故障信息。
什么是故障的摘要?
我們分析了微軟過去三年故障的數據,回答了下面幾個問題。
1、故障的影響范圍
我們分析了微軟18個云系統3年多的數據,研究了超過6000個已經解決的云故障。發現超過86%的故障是影響了很多用戶的,其中持續時間長的故障比例遠大于持續時間短的故障;同時,我們還發現25%的故障關聯超過10個事件,影響范圍比較大。
2、故障摘要包含了哪些信息?
我們把已有的工單信息、告警信息進行分析研究,主要是分析那些級別比較高的告警信息,進行整合生成故障摘要。在這個摘要里主要回答了五方面的問題:故障出現的時間、故障發生的位置、故障影響的范圍、故障如何產生、為什么會發生故障。把這些問題總結之后就能夠生成如上圖右邊實例的故障摘要。
3、人工分析故障所需的時間成本
我們做了一個統計,如上圖所示“T1”代表了故障開始時間, “T2”代表運維工程師寫完故障摘要的時間,用“T2”減“T1”表示整個故障摘要生成的時間。我們會發現超過23%的故障花費的時間是超過兩個時間單位的,耗時比較長。
4、研究結果
為了解決上述問題,我們利用基于大語言模型設計了一個技術框架,它能夠生成一個有用的、可讀的故障摘要,大幅降低故障摘要生成時間。什么是有用?指的是能夠收集和故障相關且價值比較高的信息,能夠很容易的被人看懂,同時還能夠大幅的降低生成故障的時間,這也是我們設計這個框架的目標。
技術框架方案介紹
整個框架包括幾個部分,首先是采集故障相關的告警信息。怎么樣去采集?通過三種途徑去實現的。首先是基于規則,因為有很多規則可以去利用,比如說一些告警是由同一個指標時間序列異常檢測所產生的,那么我們就判定這些告警是相關的。第二是模塊,根據歷史的告警信息,分析告警與哪些模塊是相關聯的,那么在新的一次故障產生之后,我們會把與這些模塊相關的告警關聯起來。第三是深度學習。利用一些深度學習方法,根據語義的相似性,分析哪些告警描述的是同一個事件,那就表明它們是相關的。
我們通過這三種途徑,就能夠把與這個故障本身相關的那些告警的事件采集起來,構建這個故障的范圍。范圍確定之后,把范圍內全部的告警事件聚合在一塊,根據告警的緊要程度進行自動排序。
我們把每個告警的 Title和描述做一個采集,把它們作為一個Context,再把歷史上人工所生成的摘要信息作為補充部分,對Chat GPT進行訓練。通過這樣的方式在新的故障發生之后,只需要把相關告警信息輸入進去,就可以生成本次故障的摘要信息。
實驗結果
上圖中展示的是我們的實驗結果,其中Chat GPT3.5在故障摘要生成方面效果顯著優于Chat GPT 2和其它規則或檢索生成方式。
同時,我們發現通過這種方式比傳統的人工方式的效率提高了200多倍。
我們還采用了人工的方式,把我們的研究成果發給那些故障的Owner,他們用不同的方法,比如階段生成或者基于規則來做排序,最后發現大部分工程師都還是會把Chat GPT生成的摘要排在第一位或第二位。
總結
我們的研究首先是對大規模的云服務故障做一個分析;同時設計了一個有用且可讀的技術框架,能夠大幅降低故障摘要的生成時間;最后我們研究成果得到了微軟工程師們的認可,證明該方法確實能夠大幅降低故障摘要生成的時間。
以上是我的分享,謝謝大家。