<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > SPINE:高拓展性、用戶(hù)友好的自動(dòng)化日志解析新神器

SPINE:高拓展性、用戶(hù)友好的自動(dòng)化日志解析新神器

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


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


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


近日,SPINE 被軟件工程領(lǐng)域的全球頂級會(huì )議 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 大會(huì )全稱(chēng)為 ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) ,與 ICSE、ASE 并列為軟件工程領(lǐng)域三大頂級會(huì )議,在學(xué)術(shù)界和工業(yè)界都具有極大的影響力。今年的 ESEC/FSE 大會(huì )有效投稿量為449,最終接收99篇,接收率約為22%,會(huì )議將于2022年11月14日至18日在新加坡舉辦。


圖片

日志解析:智能日志分析的關(guān)鍵核心


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


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


圖片

圖1:日志解析示例


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


大規模、不平衡的日志數據


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


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


圖片

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


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


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


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


圖片

圖3:新日志模板數量增加曲線(xiàn)


圖片

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


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


圖片

圖4:SPINE 模型總體架構圖


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


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


并行化日志數據調度


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

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

網(wǎng)線(xiàn)測試儀相關(guān)文章:網(wǎng)線(xiàn)測試儀原理


關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>