SPINE:高拓展性、用戶友好的自動(dòng)化日志解析新神器
為了解決這些挑戰(zhàn),微軟亞洲研究院的研究員們提出了支持用戶反饋且具有高可擴(kuò)展性的日志解析方法 SPINE。該方法被軟件工程領(lǐng)域頂級(jí)會(huì)議 ESEC/FSE 2022 接收,并榮獲 “杰出論文獎(jiǎng)” (ACM SIGSOFT Distinguished Paper Award)。SPINE 是如何提升日志解析效果和性能的呢?讓我們從今天的文章中獲得答案吧!
微軟亞洲研究院將攜手 ESEC/FSE 2022 合作舉辦 Ada Workshop,點(diǎn)擊上圖鏈接了解詳情
在云計(jì)算時(shí)代,軟件系統(tǒng)的可靠性至關(guān)重要,一點(diǎn)小問(wèn)題就可能引發(fā)蝴蝶效應(yīng),影響百萬(wàn)用戶。為了了解并保障軟件系統(tǒng)的穩(wěn)定,日志被廣泛用于觀測(cè)并忠實(shí)記錄系統(tǒng)的內(nèi)部狀態(tài),是分析與解決系統(tǒng)故障的基礎(chǔ)。然而,使用人工分析體量巨大的日志并不現(xiàn)實(shí),因此自動(dòng)化日志分析日漸興起,而日志解析是關(guān)鍵且基礎(chǔ)的步驟。在實(shí)踐中,日志數(shù)據(jù)往往存在著數(shù)據(jù)量巨大、極度不均衡、數(shù)據(jù)漂移且沒(méi)有標(biāo)注等問(wèn)題。為了解決這些問(wèn)題,并將日志解析真正落實(shí)到復(fù)雜的云環(huán)境中,微軟亞洲研究院的研究員們和微軟 Azure 的工程師們提出了支持用戶反饋的大數(shù)據(jù)場(chǎng)景下的日志解析方法 SPINE,并將其落地到了產(chǎn)品線中。
近日,SPINE 被軟件工程領(lǐng)域的全球頂級(jí)會(huì)議 ESEC/FSE 2022 接收,并榮獲 “杰出論文獎(jiǎng)” (ACM SIGSOFT Distinguished Paper Award)。
論文鏈接:
https://www.microsoft.com/en-us/research/publication/spine-a-scalable-log-parser-with-feedback-guidance-2/
ESEC/FSE 大會(huì)全稱為 ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) ,與 ICSE、ASE 并列為軟件工程領(lǐng)域三大頂級(jí)會(huì)議,在學(xué)術(shù)界和工業(yè)界都具有極大的影響力。今年的 ESEC/FSE 大會(huì)有效投稿量為449,最終接收99篇,接收率約為22%,會(huì)議將于2022年11月14日至18日在新加坡舉辦。
日志解析:智能日志分析的關(guān)鍵核心
自動(dòng)化日志分析在近年來(lái)逐漸成為研究熱點(diǎn),例如基于日志的異常檢測(cè)、故障診斷、故障預(yù)測(cè)等。幾乎所有的自動(dòng)化日志分析技術(shù),都依賴于日志解析這一關(guān)鍵的前置步驟。經(jīng)過(guò)日志解析,將半結(jié)構(gòu)化文本形式的原始日志轉(zhuǎn)換為結(jié)構(gòu)化的日志數(shù)據(jù)之后,下游的各類日志分析任務(wù)才能自動(dòng)化地執(zhí)行。
日志解析可從形式上被定義為:從原始日志信息中提取日志模板和日志參數(shù)的任務(wù)。日志信息的主體通常由兩部分構(gòu)成:(1) 模板:描述系統(tǒng)事件的靜態(tài)的關(guān)鍵字,通常為一段自然語(yǔ)言,這些關(guān)鍵字被顯式地寫(xiě)在日志語(yǔ)句的代碼中。(2) 參數(shù):也稱為動(dòng)態(tài)變量,是在程序運(yùn)行期間的某個(gè)變量的值。
圖1:日志解析示例
現(xiàn)階段,大量的自動(dòng)化日志解析工作致力于準(zhǔn)確高效地分離日志中的模板和參數(shù)部分。盡管這些日志解析器在公開(kāi)的基準(zhǔn)日志數(shù)據(jù)集上取得了良好成效,但它們?cè)趯?shí)際應(yīng)用中仍然面臨諸多挑戰(zhàn)。微軟的研究員和工程師們通過(guò)在實(shí)際工業(yè)環(huán)境中進(jìn)行的大量例證研究,揭示出其中的兩個(gè)核心挑戰(zhàn)。
大規(guī)模、不平衡的日志數(shù)據(jù)
首先,大多數(shù)現(xiàn)有的日志解析器只能在單線程模式下運(yùn)行。然而,現(xiàn)實(shí)世界的日志數(shù)據(jù)量極為龐大。例如,在例證研究中,僅微軟某個(gè)內(nèi)部服務(wù),平均每天就會(huì)產(chǎn)出約50億條日志,合每小時(shí)約2億條。如此規(guī)模的數(shù)據(jù)量超出了任何單一計(jì)算核或節(jié)點(diǎn)的處理能力,尤其難以滿足實(shí)時(shí)日志分析的需要。
表面上,日志解析似乎是一項(xiàng)很容易并行化的任務(wù)。然而,工業(yè)實(shí)踐中日志數(shù)據(jù)的內(nèi)在不平衡性將大大降低并行化的效率。這促使研究員們?cè)O(shè)計(jì)一種能夠在多個(gè)計(jì)算單元上進(jìn)行更有效的橫向擴(kuò)展的日志解析器。
圖2:不同日志模板下日志數(shù)量分布:X 軸表示模板 ID,Y 軸表示對(duì)應(yīng)于該模板的日志數(shù)量(Y 軸為對(duì)數(shù)標(biāo)度)。
日志漂移與解析器的快速適應(yīng)
另一個(gè)挑戰(zhàn)來(lái)自于日志伴隨著軟件系統(tǒng)的迭代而不斷發(fā)生變化。研究員們?cè)谖④浤硟?nèi)部服務(wù)中收集了8周的日志,并計(jì)算隨著時(shí)間推移而新出現(xiàn)的日志模板的數(shù)量,結(jié)果如圖3所示。由于持續(xù)集成/交付(CI/CD)的開(kāi)發(fā)范式,日志模板的數(shù)量會(huì)隨時(shí)間增加,日志解析器也應(yīng)不斷地更新,以適應(yīng)數(shù)據(jù)的漂移,否則解析的準(zhǔn)確度會(huì)隨時(shí)間流逝而逐漸下降。
遺憾的是,因?yàn)槿鄙僮銐虻挠袠?biāo)簽數(shù)據(jù),現(xiàn)有的日志解析器大多采用無(wú)監(jiān)督的方法,例如聚類、頻繁模式挖掘、最長(zhǎng)共同子序列提取等來(lái)識(shí)別日志的公共部分作為模板。這需要大量的人工標(biāo)注來(lái)進(jìn)行繁瑣的模型超參數(shù)調(diào)整,并且要求用戶對(duì)日志解析方法的內(nèi)部原理極為熟悉。因此,研究員們認(rèn)為日志解析應(yīng)當(dāng)降本增效,盡可能地降低用戶反饋機(jī)制的成本,提高用戶體驗(yàn),以達(dá)到快速調(diào)整日志解析器參數(shù)的效果。
圖3:新日志模板數(shù)量增加曲線
反饋支持的高擴(kuò)展日志解析器 SPINE
針對(duì)上述問(wèn)題,微軟亞洲研究院的研究員們?cè)O(shè)計(jì)了 SPINE。SPINE 具體分為兩個(gè)階段:離線訓(xùn)練階段(紅色箭頭)和在線解析階段(綠色箭頭)。在離線訓(xùn)練階段,SPINE 會(huì)基于收集的日志數(shù)據(jù)訓(xùn)練一個(gè)初始模型。隨后,在在線解析階段,應(yīng)用訓(xùn)練得到的日志解析模型,處理不斷更新的在線日志數(shù)據(jù)。
圖4:SPINE 模型總體架構(gòu)圖
SPINE 包含四個(gè)核心組件:日志數(shù)據(jù)預(yù)處理(Pre-processing)、初始分組(Initial grouping)、漸進(jìn)式聚類(Progressive clustering)和在線解析(Online parsing)。首先,對(duì)原始的日志分詞,并進(jìn)行必要的日志清理。在此之后,初始分組模塊會(huì)將日志快速分割成粗粒度的、互不重疊的多個(gè)日志組(log group)。再將漸進(jìn)式聚類算法應(yīng)用于每個(gè)日志組 ,把相似的日志進(jìn)一步劃分為細(xì)粒度的日志簇(log cluster)。一個(gè)日志簇中的日志,可以認(rèn)為誕生于同一個(gè)日志打印語(yǔ)句。因此,可以提取其共同的 token 作為模板,將其余部分視為參數(shù)。在線解析階段,SPINE 會(huì)將學(xué)習(xí)到的模型應(yīng)用于新到來(lái)的日志數(shù)據(jù)。基于這些日志和模型中已有的日志模版之間的相似度,將其歸屬為最相似的日志簇中,并解析出其模板和參數(shù)。
SPINE 可以靈活地?cái)U(kuò)展到多個(gè)并行計(jì)算單元,以應(yīng)對(duì)極大規(guī)模的工業(yè)日志數(shù)據(jù)。為了應(yīng)對(duì)工業(yè)日志數(shù)據(jù)的極端不平衡性,研究員們?cè)O(shè)計(jì)了一種特殊的日志數(shù)據(jù)調(diào)度算法來(lái)平衡不同計(jì)算單元上的工作負(fù)載,以節(jié)約總體運(yùn)行時(shí)間。此外,SPINE 還設(shè)計(jì)了專門(mén)的用戶反饋機(jī)制來(lái)維持在漂移日志數(shù)據(jù)下的解析精度。
并行化日志數(shù)據(jù)調(diào)度
在前置步驟中,日志被劃分成不同的日志組。然而,工業(yè)日志數(shù)據(jù)的不平衡性會(huì)導(dǎo)致日志的解析時(shí)間往往受制于最大的那個(gè)日志組。這一挑戰(zhàn)促使了新的調(diào)度算法設(shè)計(jì)的誕生,將日志解析任務(wù)更均勻地分配給多個(gè)計(jì)算單元,以達(dá)到最佳性能。假設(shè)
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。
網(wǎng)線測(cè)試儀相關(guān)文章:網(wǎng)線測(cè)試儀原理