博客專欄

EEPW首頁 > 博客 > SPINE:高拓展性、用戶友好的自動化日志解析新神器

SPINE:高拓展性、用戶友好的自動化日志解析新神器

發(fā)布人:MSRAsia 時間:2022-11-21 來源:工程師 發(fā)布文章
編者按:在計算機系統(tǒng)與軟件的實踐和研究中,可靠性是至關重要且經(jīng)久不衰的課題。如何自動化地分析日志所記錄的系統(tǒng)狀態(tài)并讓數(shù)據(jù)“說話” ,受到了廣泛研究。日志解析是自動化日志分析中的關鍵起步。如何將日志解析應用于大規(guī)模復雜的云環(huán)境往往面臨諸多現(xiàn)實挑戰(zhàn),如數(shù)據(jù)不均衡,數(shù)據(jù)漂移等。
為了解決這些挑戰(zhàn),微軟亞洲研究院的研究員們提出了支持用戶反饋且具有高可擴展性的日志解析方法 SPINE。該方法被軟件工程領域頂級會議 ESEC/FSE 2022 接收,并榮獲 “杰出論文獎” (ACM SIGSOFT Distinguished Paper Award)。SPINE 是如何提升日志解析效果和性能的呢?讓我們從今天的文章中獲得答案吧!


圖片微軟亞洲研究院將攜手 ESEC/FSE 2022 合作舉辦 Ada Workshop,點擊上圖鏈接了解詳情


在云計算時代,軟件系統(tǒng)的可靠性至關重要,一點小問題就可能引發(fā)蝴蝶效應,影響百萬用戶。為了了解并保障軟件系統(tǒng)的穩(wěn)定,日志被廣泛用于觀測并忠實記錄系統(tǒng)的內(nèi)部狀態(tài),是分析與解決系統(tǒng)故障的基礎。然而,使用人工分析體量巨大的日志并不現(xiàn)實,因此自動化日志分析日漸興起,而日志解析是關鍵且基礎的步驟。在實踐中,日志數(shù)據(jù)往往存在著數(shù)據(jù)量巨大、極度不均衡、數(shù)據(jù)漂移且沒有標注等問題。為了解決這些問題,并將日志解析真正落實到復雜的云環(huán)境中,微軟亞洲研究院的研究員們和微軟 Azure 的工程師們提出了支持用戶反饋的大數(shù)據(jù)場景下的日志解析方法 SPINE,并將其落地到了產(chǎn)品線中。


近日,SPINE 被軟件工程領域的全球頂級會議 ESEC/FSE 2022 接收,并榮獲 “杰出論文獎” (ACM SIGSOFT Distinguished Paper Award)。


圖片

論文鏈接:

https://www.microsoft.com/en-us/research/publication/spine-a-scalable-log-parser-with-feedback-guidance-2/





ESEC/FSE 大會全稱為 ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) ,與 ICSE、ASE 并列為軟件工程領域三大頂級會議,在學術界和工業(yè)界都具有極大的影響力。今年的 ESEC/FSE 大會有效投稿量為449,最終接收99篇,接收率約為22%,會議將于2022年11月14日至18日在新加坡舉辦。


圖片

日志解析:智能日志分析的關鍵核心


自動化日志分析在近年來逐漸成為研究熱點,例如基于日志的異常檢測、故障診斷、故障預測等。幾乎所有的自動化日志分析技術,都依賴于日志解析這一關鍵的前置步驟。經(jīng)過日志解析,將半結構化文本形式的原始日志轉換為結構化的日志數(shù)據(jù)之后,下游的各類日志分析任務才能自動化地執(zhí)行。


日志解析可從形式上被定義為:從原始日志信息中提取日志模板和日志參數(shù)的任務。日志信息的主體通常由兩部分構成:(1) 模板:描述系統(tǒng)事件的靜態(tài)的關鍵字,通常為一段自然語言,這些關鍵字被顯式地寫在日志語句的代碼中。(2) 參數(shù):也稱為動態(tài)變量,是在程序運行期間的某個變量的值。


圖片

圖1:日志解析示例


現(xiàn)階段,大量的自動化日志解析工作致力于準確高效地分離日志中的模板和參數(shù)部分。盡管這些日志解析器在公開的基準日志數(shù)據(jù)集上取得了良好成效,但它們在實際應用中仍然面臨諸多挑戰(zhàn)。微軟的研究員和工程師們通過在實際工業(yè)環(huán)境中進行的大量例證研究,揭示出其中的兩個核心挑戰(zhàn)。


大規(guī)模、不平衡的日志數(shù)據(jù)


首先,大多數(shù)現(xiàn)有的日志解析器只能在單線程模式下運行。然而,現(xiàn)實世界的日志數(shù)據(jù)量極為龐大。例如,在例證研究中,僅微軟某個內(nèi)部服務,平均每天就會產(chǎn)出約50億條日志,合每小時約2億條。如此規(guī)模的數(shù)據(jù)量超出了任何單一計算核或節(jié)點的處理能力,尤其難以滿足實時日志分析的需要。


表面上,日志解析似乎是一項很容易并行化的任務。然而,工業(yè)實踐中日志數(shù)據(jù)的內(nèi)在不平衡性將大大降低并行化的效率。這促使研究員們設計一種能夠在多個計算單元上進行更有效的橫向擴展的日志解析器。


圖片

圖2:不同日志模板下日志數(shù)量分布:X 軸表示模板 ID,Y 軸表示對應于該模板的日志數(shù)量(Y 軸為對數(shù)標度)。


日志漂移與解析器的快速適應


另一個挑戰(zhàn)來自于日志伴隨著軟件系統(tǒng)的迭代而不斷發(fā)生變化。研究員們在微軟某內(nèi)部服務中收集了8周的日志,并計算隨著時間推移而新出現(xiàn)的日志模板的數(shù)量,結果如圖3所示。由于持續(xù)集成/交付(CI/CD)的開發(fā)范式,日志模板的數(shù)量會隨時間增加,日志解析器也應不斷地更新,以適應數(shù)據(jù)的漂移,否則解析的準確度會隨時間流逝而逐漸下降。


遺憾的是,因為缺少足夠的有標簽數(shù)據(jù),現(xiàn)有的日志解析器大多采用無監(jiān)督的方法,例如聚類、頻繁模式挖掘、最長共同子序列提取等來識別日志的公共部分作為模板。這需要大量的人工標注來進行繁瑣的模型超參數(shù)調(diào)整,并且要求用戶對日志解析方法的內(nèi)部原理極為熟悉。因此,研究員們認為日志解析應當降本增效,盡可能地降低用戶反饋機制的成本,提高用戶體驗,以達到快速調(diào)整日志解析器參數(shù)的效果。


圖片

圖3:新日志模板數(shù)量增加曲線


圖片

反饋支持的高擴展日志解析器 SPINE


針對上述問題,微軟亞洲研究院的研究員們設計了 SPINE。SPINE 具體分為兩個階段:離線訓練階段(紅色箭頭)和在線解析階段(綠色箭頭)。在離線訓練階段,SPINE 會基于收集的日志數(shù)據(jù)訓練一個初始模型。隨后,在在線解析階段,應用訓練得到的日志解析模型,處理不斷更新的在線日志數(shù)據(jù)。


圖片

圖4:SPINE 模型總體架構圖


SPINE 包含四個核心組件:日志數(shù)據(jù)預處理(Pre-processing)、初始分組(Initial grouping)、漸進式聚類(Progressive clustering)和在線解析(Online parsing)。首先,對原始的日志分詞,并進行必要的日志清理。在此之后,初始分組模塊會將日志快速分割成粗粒度的、互不重疊的多個日志組(log group)。再將漸進式聚類算法應用于每個日志組 ,把相似的日志進一步劃分為細粒度的日志簇(log cluster)。一個日志簇中的日志,可以認為誕生于同一個日志打印語句。因此,可以提取其共同的 token 作為模板,將其余部分視為參數(shù)。在線解析階段,SPINE 會將學習到的模型應用于新到來的日志數(shù)據(jù)。基于這些日志和模型中已有的日志模版之間的相似度,將其歸屬為最相似的日志簇中,并解析出其模板和參數(shù)。


SPINE 可以靈活地擴展到多個并行計算單元,以應對極大規(guī)模的工業(yè)日志數(shù)據(jù)。為了應對工業(yè)日志數(shù)據(jù)的極端不平衡性,研究員們設計了一種特殊的日志數(shù)據(jù)調(diào)度算法來平衡不同計算單元上的工作負載,以節(jié)約總體運行時間。此外,SPINE 還設計了專門的用戶反饋機制來維持在漂移日志數(shù)據(jù)下的解析精度。


并行化日志數(shù)據(jù)調(diào)度


在前置步驟中,日志被劃分成不同的日志組。然而,工業(yè)日志數(shù)據(jù)的不平衡性會導致日志的解析時間往往受制于最大的那個日志組。這一挑戰(zhàn)促使了新的調(diào)度算法設計的誕生,將日志解析任務更均勻地分配給多個計算單元,以達到最佳性能。假設

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。

網(wǎng)線測試儀相關文章:網(wǎng)線測試儀原理


關鍵詞: AI

相關推薦

技術專區(qū)

關閉