基于深度模型日志序列異常檢測(異常數(shù)據(jù)檢測模型)

      網(wǎng)友投稿 1804 2022-05-30

      日志異常檢測的核心是利用人工智能算法自動(dòng)分析系統(tǒng)日志來發(fā)現(xiàn)并定位故障。根據(jù)送入檢測模型的數(shù)據(jù)格式,日志異常檢測算法模型分為序列模型和頻率模型,其中序列模型又可以分為深度模型和聚類模型。自 2017 年 Min Du 等人提出 DeepLog 以來,基于序列的深度學(xué)習(xí)建模逐漸成為近年來研究的熱點(diǎn)。

      深度模型的日志異常檢測基本流程

      深度學(xué)習(xí)使用神經(jīng)網(wǎng)絡(luò)的多層體系結(jié)構(gòu),從原始輸入中逐步提取特征,不同的層處理不同級(jí)別的特征抽象。由于神經(jīng)網(wǎng)絡(luò)在復(fù)雜關(guān)系建模方面表現(xiàn)出了卓越的能力,因此被廣泛應(yīng)用于基于日志的異常檢測。日志數(shù)據(jù)異常檢測的基本流程如下圖所示,包括日志分區(qū)、特征提取、模型訓(xùn)練和在線更新四個(gè)步驟。

      Log partition:現(xiàn)代軟件系統(tǒng)通常采用微服務(wù)架構(gòu),并包含大量在多線程環(huán)境中運(yùn)行的模塊。不同的微服務(wù)或模塊通常將它們的執(zhí)行日志聚合到一個(gè)日志文件中,這阻礙了自動(dòng)化的日志挖掘。為了解決這個(gè)問題,交錯(cuò)的日志應(yīng)該被分成不同的組,每個(gè)組代表單個(gè)系統(tǒng)任務(wù)的執(zhí)行。分區(qū)日志組是構(gòu)建日志挖掘模型之前提取特征的基本單元,通常使用 Timestamp 時(shí)間戳和 Log Identifier 日志標(biāo)識(shí)符作為日志分割器。

      Feature Extraction:為了通過深度模型自動(dòng)地分析日志,日志分區(qū)中的日志文本需要轉(zhuǎn)換成適合機(jī)器學(xué)習(xí)算法的格式。一般使用兩類基于日志的特征,即數(shù)字特征和圖形特征。數(shù)字特征主要包含四類特征:Log event sequence 日志事件序列-記錄系統(tǒng)活動(dòng)的日志事件序列;Log event count vector 日志事件計(jì)數(shù)向量-記錄日志分區(qū)中日志事件發(fā)生情況的特征向量,其中每個(gè)特征表示一個(gè)日志事件類型,該值對發(fā)生次數(shù)進(jìn)行計(jì)數(shù);Parameter value vector 參數(shù)值向量-記錄日志中出現(xiàn)的參數(shù)值;Ad hoc features 日志中提取的一組相關(guān)和有代表性的特征,這些特征是使用對象軟件系統(tǒng)和問題上下文的領(lǐng)域知識(shí)定義的。圖形特征通常產(chǎn)生表征系統(tǒng)行為的有向圖模型,發(fā)現(xiàn)系統(tǒng)組件和事件與日志之間的層次和順序關(guān)系。

      Model training:日志數(shù)據(jù)異常檢測需要基于特定的問題選擇適當(dāng)?shù)乃惴ǎ谔崛〉奶卣鬟x擇合適的模型。日志異常檢測任務(wù)的一個(gè)基本假設(shè)是:大多數(shù)日志應(yīng)該表現(xiàn)出符合系統(tǒng)正常行為的模式。例如,在異常檢測中,不同的模型被訓(xùn)練成從不同的角度捕獲各種模式,并被用來檢測缺乏所需屬性的異常。

      Online Deployment:日志異常檢測模型可以集成到軟件產(chǎn)品中,以檢測惡意系統(tǒng)行為并實(shí)時(shí)發(fā)出警報(bào)。由于軟件系統(tǒng)可能在其產(chǎn)品生命周期中升級(jí),先前訓(xùn)練的模型可能不適合模式變化,所以需要在線更新以適應(yīng)前所未有的日志模式。

      DeepLog 基于LSTM深度模型的系統(tǒng)日志異常檢測

      DeepLog

      Du M , Li F , Zheng G , et al. DeepLog: Anomaly Detection and Diagnosis from System Logs through Deep Learning[C]// Acm Sigsac Conference on Computer & Communications Security. ACM, 2017.

      DeepLog 的總體架構(gòu)如下圖所示,分為訓(xùn)練和檢測兩個(gè)階段。在訓(xùn)練階段,大量的系統(tǒng)日志數(shù)據(jù)被日志解析器解析為日志鍵和一個(gè)參數(shù)值向量的組合;然后使用這些日志鍵序列來訓(xùn)練一個(gè)日志鍵異常檢測模型,并構(gòu)建用于診斷目標(biāo)系統(tǒng)執(zhí)行工作流模型。對于不用的日志鍵,用它們的參數(shù)值向量訓(xùn)練一個(gè)參數(shù)值異常檢測模型來檢測有這些參數(shù)值反映的系統(tǒng)性能異常。在檢測階段,當(dāng)一個(gè)新的日志記錄到達(dá)時(shí),它也被日志解析器解析為一個(gè)日志鍵和一個(gè)參數(shù)值向量的組合,然后使用對應(yīng)內(nèi)容經(jīng)過對應(yīng)異常檢測模型進(jìn)行檢測,如果任一檢測模型檢測結(jié)果為異常,則將其標(biāo)記為異常日志記錄。詳細(xì)的 DeepLog 實(shí)現(xiàn)原理可參考:基于LSTM深度模型實(shí)現(xiàn)系統(tǒng)日志異常檢測

      DeepLog 存在的局限性

      DeepLog 模型對日志模板進(jìn)行編碼時(shí)只使用模板索引,這可能導(dǎo)致丟失有價(jià)值的信息,因?yàn)槟0逅饕荒芙沂救罩镜恼Z義關(guān)系。

      真實(shí)的現(xiàn)代軟件系統(tǒng)是不斷經(jīng)歷功能升級(jí)和系統(tǒng)更新的,因此,日志的模式可能會(huì)相應(yīng)地漂移。DeepLog 模型難以應(yīng)付不斷變化的、有噪聲的日志數(shù)據(jù)。

      DeepLog 深度學(xué)習(xí)模型雖然在一些數(shù)據(jù)集上取得了較好的成績,但是仍然逃不脫類似黑盒預(yù)言的評(píng)價(jià),模型可解釋性較差。日志分析應(yīng)該繼續(xù)追求更易于解釋和值得信賴的算法。

      DeepLog 模型主要是針對高于底層操作系統(tǒng)的分布式軟件例如 HDFS,OpenStack 進(jìn)行日志異常檢測,在此類系統(tǒng)中出現(xiàn)的性能異常不同于在 HPC 系統(tǒng)中出現(xiàn)的硬件嚴(yán)重錯(cuò)誤。所以在計(jì)算機(jī)群中的日志異常檢測需要預(yù)測故障的前置時(shí)間,以避免嚴(yán)重宕機(jī)故障的發(fā)生。

      基于語義理解的日志異常檢測模型

      日志數(shù)據(jù)是程序開發(fā)人員為輔助調(diào)試在程序中嵌入的打印輸出代碼所產(chǎn)生的文本數(shù)據(jù),用以記錄程序運(yùn)行時(shí)的變量信息、程序執(zhí)行狀態(tài)等,所以一般情況下日志數(shù)據(jù)都含有豐富的語義信息。但是現(xiàn)有的研究中對日志數(shù)據(jù)的分析往往側(cè)重于事件表示,而忽略了日志中嵌入的語義信息,這可能導(dǎo)致丟失有價(jià)值的信息。基于語義理解的日志異常檢測模型致力于對日志的自動(dòng)理解,這將消除日志數(shù)據(jù)概念漂移帶來的問題的一種有效應(yīng)對方法。此外,對于日志數(shù)據(jù)的語義理解還可以在日志語句的自動(dòng)生成中發(fā)揮重要作用。

      Template2Vec

      Meng W, et al. “LogAnomaly - Unsupervised Detection of Sequential and Quantitative Anomalies in Unstructured Logs.” IJCAI (2019): 4739-4745.

      LogAnomaly 以大部分系統(tǒng)日志是由系統(tǒng)程序輸出的半結(jié)構(gòu)化文本的事實(shí)為基礎(chǔ),將自然語言處理的方法應(yīng)用或改進(jìn)于日志異常檢測。在模型設(shè)計(jì)中本文使用深度學(xué)習(xí)來離線學(xué)習(xí)日志模板的關(guān)系與對應(yīng)參數(shù)值,為了保留日志模板之間的語義關(guān)系,本文不是使用簡單的模板索引而是根據(jù)詞嵌入的原理,設(shè)計(jì)了一種簡單而有效的模板表示方法 Template2Vec,用來準(zhǔn)確地從日志模板中提取語義和語法信息。這種方式不僅捕獲了模板中單詞上下文信息,還捕獲了語義信息,語義信息有助于應(yīng)對概念漂移,一般情況下將具有同義詞的日志視為相似事件,反義詞的日志通常指示不同的事件。除此之外,本文還設(shè)計(jì)了一種機(jī)制來合并新模板,這樣可以自動(dòng)化的更新日志異常檢測模型,而無需操作員在兩個(gè)相鄰的訓(xùn)練之間進(jìn)行人工反饋。

      Template2Vec 在離線學(xué)習(xí)階段包括三個(gè)步驟如下圖所示,分別是構(gòu)造同義詞和反義詞集合、生成詞向量和計(jì)算模板向量

      構(gòu)造同義詞和反義詞集合:在一個(gè)英語詞匯數(shù)據(jù)庫 WordNet 中對模板內(nèi)容中的自然語言單詞進(jìn)行同義詞和反義詞搜索,一些領(lǐng)域特定業(yè)務(wù)知識(shí)的同義詞和反義詞需要由運(yùn)維人員進(jìn)行識(shí)別,并將其轉(zhuǎn)化為正常的自然語言詞匯。

      生成詞向量:應(yīng)用一個(gè)分布式詞匯對比嵌入模型 dLCE 生成模板中單詞的詞向量

      計(jì)算模板向量:模板向量是模板中單詞的詞向量的加權(quán)平均值。

      一個(gè)模板向量的生成實(shí)例如下圖所示,首先將日志內(nèi)容處理成自然語言詞匯,然后以此為基礎(chǔ)生成對應(yīng)的詞向量,最后計(jì)算模板中詞向量的加權(quán)平均值生成模板向量:

      Log2Vec

      Meng, Weibin, et al. “A semantic-aware representation framework for online log analysis.” 2020 29th International Conference on Computer Communications and Networks (ICCCN). IEEE, 2020.

      現(xiàn)代系統(tǒng)中更新是常態(tài),由于需要添加新功能、修復(fù)錯(cuò)誤或提高系統(tǒng)性能等更改,系統(tǒng)中的軟硬件更新是頻繁的。這種情況下,特定領(lǐng)域的日志詞匯會(huì)不斷增長,提取這些特定領(lǐng)域詞匯的語義信息對于日志分析來說存在困難,但其包含的語義信息卻關(guān)鍵。另外,基于同義詞反義詞的語義信息提取方法 Template2Vec 存在缺陷,在很多情況下無法捕捉日志中許多單詞的精確含義,因?yàn)橐恍α⒑x的詞匯可能有相似的上下文,即為相似日志事件。

      LSWE 采用了兩種單詞嵌入方法,詞匯信息單詞嵌入 (LWE) 和語義單詞嵌入 (SWE),將詞匯對比整合到分布向量中,并加強(qiáng)了用于確定詞相似度的特定領(lǐng)域語義和關(guān)系信息。對于給定對應(yīng)于目標(biāo)詞的同義詞和反義詞集合的情況,本文使用 LWE 預(yù)測目標(biāo)詞,使得其向量表示的距離盡可能接近其同義詞,并且盡可能遠(yuǎn)離其反義詞。對于一般情況,本文使用 SWE 進(jìn)行單詞嵌入,將反義詞集和關(guān)系三元組結(jié)合起來,以提高詞向量的質(zhì)量。具體做法是:首先對于通用的關(guān)系三元組采用 Dependence Trees 方法進(jìn)行語義向量轉(zhuǎn)化如下圖所示,然后 對于業(yè)務(wù)領(lǐng)域范圍內(nèi)的關(guān)系三元組,加入專家經(jīng)驗(yàn)來識(shí)別處理。

      LSWE 的顯著優(yōu)點(diǎn)是它能夠?qū)卧~進(jìn)行概括,這是通過將詞匯和關(guān)系特征的嵌入集成到低維歐幾里得空間中來實(shí)現(xiàn)的。這些低維嵌入可以捕捉分布的相似性,因此信息可以在傾向于出現(xiàn)在相似上下文中的單詞之間共享。然而,不可能列舉所有日志的全部詞匯,并且會(huì)遺漏在以后的服務(wù)中出現(xiàn)的 OOV 單詞。 為了在運(yùn)行時(shí)處理 OOV 單詞,本文采用了 MIMICK 方法,這是一種通過學(xué)習(xí)從拼寫到分布式嵌入的函數(shù)來生成 OOV 詞嵌入的方法,該方法在已有的詞匯數(shù)據(jù)集上訓(xùn)練出可用的 MIMICK 模型;然后,使用該模型在 OOV 單詞上將其轉(zhuǎn)換為一個(gè)唯一的詞向量。MIMICK 將 OOV 單詞嵌入的問題視為一個(gè)生成問題:無論原始嵌入是如何創(chuàng)建的,MIMICK 都假設(shè)有一個(gè)基于生成詞形的協(xié)議來創(chuàng)建這些嵌入。通過在現(xiàn)有的詞匯上訓(xùn)練一個(gè)模型,MIMICK 可以在以后使用這個(gè)模型來預(yù)測前面沒遇到的單詞嵌入,感覺有點(diǎn)類似 GAN 的生成邏輯。

      適應(yīng)概念漂移的日志異常檢測模型

      大多數(shù)現(xiàn)有方法都是離線使用歷史日志數(shù)據(jù)來訓(xùn)練模型。然而,現(xiàn)代軟件系統(tǒng)不斷經(jīng)歷功能升級(jí)和系統(tǒng)更新;因此,日志模板可能會(huì)相應(yīng)地漂移。在線更新的一種常見策略是周期性地重新訓(xùn)練模型,但具有很高的假陽性率,這樣的策略具有有限的泛化能力。能夠具備在線學(xué)習(xí)和增量學(xué)習(xí)并適合概念漂移的日志異常檢測模型,將更能應(yīng)對實(shí)際的日志異常檢測場景。

      LogRobust

      Zhang, Xu, et al. “Robust log-based anomaly detection on unstable log data.” Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 2019.

      現(xiàn)有的日志異常檢測方法主要使用從歷史日志中提取的日志事件數(shù)據(jù)來構(gòu)建檢測模型。這些方法都有一個(gè)假設(shè),即假設(shè)日志數(shù)據(jù)隨著時(shí)間的推移是穩(wěn)定的,并且一組不同的日志事件是已知的。然而,在實(shí)踐中,日志數(shù)據(jù)往往包含以前沒出現(xiàn)過的日志事件或日志序列。日志數(shù)據(jù)的不穩(wěn)定性主要來源于兩個(gè)方面,一個(gè)是系統(tǒng)軟硬件更新帶了的日志打印語句演化,另一個(gè)是日志數(shù)據(jù)的收集、檢索和預(yù)處理過程中,不可避免地會(huì)在原始日志數(shù)據(jù)中引入一定程度的噪聲。

      本文提出了一種具有較好魯棒性的日志異常檢測模型,能夠識(shí)別和處理不穩(wěn)定的日志事件和日志序列。首先考慮提取日志事件的語義信息,將每個(gè)日志事件轉(zhuǎn)換成一個(gè)向量,通過語義向量化的方式即使日志事件在演化過程中發(fā)生了變化或被噪聲影響,其語義向量仍然可以表示為與原始日志事件相似的向量,使用這種方法就能夠處理不穩(wěn)定的日志事件。然后,本文使用基于注意力的 Bi-LSTM 神經(jīng)網(wǎng)絡(luò)進(jìn)行檢測異常,該模型能夠捕獲日志序列中的上下文信息,并學(xué)習(xí)為不同的日志事件分配不同的重要程度,自動(dòng)了解不同日志事件的重要性,這樣便能夠處理不穩(wěn)定的日志序列。基于上述方法,所以 LogRobust 能夠?qū)φ鎸?shí)的、不斷變化的、有噪聲的日志數(shù)據(jù)進(jìn)行準(zhǔn)確而魯棒的異常檢測。

      LogRobust 采用的語義向量化方法包含三個(gè)步驟:日志事件預(yù)處理、單詞向量化和基于 TF-IDF 的聚合

      Pre-processing of Log Events:首先從日志事件語句中移除所有非字符標(biāo)記,如分隔符、運(yùn)算符、標(biāo)點(diǎn)符號(hào)和數(shù)字。然后去掉所有的停用詞,如 a, the 等。另外需要考慮的是,日志事件經(jīng)常出現(xiàn)一些駝峰形的變量名,它們實(shí)際上是單詞的串聯(lián)。比如變量名 TypeDeclaration 由 Type 和 Declaration 構(gòu)成,LogRobust 根據(jù)駝峰規(guī)則將這些復(fù)合標(biāo)記拆分為單個(gè)標(biāo)記。

      Word Vectorization:使用區(qū)分度 Discrimination 語義向量應(yīng)該能夠高分辨地表示不同的日志事件;使用兼容性 Compatibility 語義向量應(yīng)該能夠識(shí)別語義相似的不穩(wěn)定日志事件。使用 FastTex t算法充分捕捉自然語言中單詞之間的內(nèi)在關(guān)系,并將每個(gè)單詞映射成詞向量。

      TF-IDF Based Aggregation:使用 TF-IDF(TF:頻度,IDF:反向文檔里,類似停詞)加權(quán)聚合方法可以有效地度量句子中單詞的重要性,這正好滿足了高區(qū)分度的要求。例如,如果單詞 Block 經(jīng)常出現(xiàn)在日志事件中,這意味著該單詞可能更能代表該日志事件;相反,如果 Block 出現(xiàn)在絕大部分日志中,那可以將其視為停用詞。

      LSTM 模型是循環(huán)神經(jīng)網(wǎng)絡(luò) RNN 的一個(gè)變種,由輸入層、隱藏神經(jīng)元層和輸出層組成,經(jīng)常被用于序列數(shù)據(jù)分析。其節(jié)點(diǎn)之間的連接沿著時(shí)間序列形成有向圖,這種影響傳播關(guān)系使得它能夠捕獲序列的上下文信息,這使得 LSTM 能夠?qū)?dòng)態(tài)變化的數(shù)據(jù)進(jìn)行分析。Bi-LSTM 將標(biāo)準(zhǔn)的 LSTM 模型的隱藏神經(jīng)元層分為兩個(gè)方向,一個(gè)是前向通道和后向通道,這種方式使得 Bi-LSTM 模型可以在兩個(gè)方向上捕獲輸入日志序列的足夠信息,滿足處理動(dòng)態(tài)變化的處理需求。

      由于不同的日志事件對分類結(jié)果有不同的影響,為了增強(qiáng) Bi-LSTM 模型處理不穩(wěn)定日志序列的能力,本文在 Bi-LSTM 模型中引入了注意機(jī)制,為日志事件分配不同的權(quán)重。這種方式可以將日志數(shù)據(jù)噪音的影響降低,因?yàn)槟切┯性胍舻娜罩臼录惶匾锌赡鼙缓鲆暋H罩臼录闹匾钥梢詮淖⒁饬幼詣?dòng)學(xué)習(xí),具體地說,如上圖中的 FC 層這是一個(gè)完全連接層作為注意力層添加到串聯(lián)的隱藏狀態(tài)中,其輸出是注意力權(quán)重,這反映了日志事件的重要性。權(quán)重越大,模型就越關(guān)注這個(gè)日志事件。最后,對所有這些權(quán)重的隱藏狀態(tài)求和,然后構(gòu)造一個(gè)輸出層來輸出分類結(jié)果。

      Multi-CAD

      Xie, Xueshuo, et al. “Confidence guided anomaly detection model for anti-concept drift in dynamic logs.” Journal of Network and Computer Applications 162 (2020): 102659.

      前面的工作中一般使用定期的再培訓(xùn)來應(yīng)對概念漂移,但是這總是需要領(lǐng)域知識(shí)和低效率,并且不能實(shí)際解決問題。主要有以下原因:

      這些異常檢測方法通常是粗粒度的異常檢測,不考慮同一類中的日志差異或日志之間的不一致性;

      之前的異常檢測算法缺乏一種機(jī)制來隨著數(shù)據(jù)分布或新日志與先前日志之間的關(guān)系的變化而動(dòng)態(tài)更新先前的經(jīng)驗(yàn);

      單個(gè)算法的決策在動(dòng)態(tài)日志中缺乏魯棒性,而多個(gè)算法的聯(lián)合檢測將糾正少數(shù)算法的錯(cuò)誤檢測。因此,當(dāng)動(dòng)態(tài)環(huán)境中的數(shù)據(jù)分布發(fā)生變化時(shí),這些算法很難相應(yīng)地改變決策,從而導(dǎo)致性能下降。

      基于日志的異常檢測算法的準(zhǔn)確性將在動(dòng)態(tài)日志中顯著降低,因?yàn)橄到y(tǒng)比以前更加復(fù)雜,這種現(xiàn)象被稱為概念漂移。本文設(shè)計(jì)了一個(gè)結(jié)合多種算法的置信度異常檢測模型,稱為 Multi-CAD。模型主要完成兩個(gè)工作,一個(gè)是建立新舊日志的一致性的判斷機(jī)制,二是構(gòu)建基于置信度的多算法組合檢測模型。首先,本文提出了一個(gè)統(tǒng)計(jì)值 p_value 來度量日志之間的不一致性,并在新日志和以前的日志中建立一個(gè)連接;另外,選擇多個(gè)合適的算法作為不一致性度量來計(jì)算組合檢測的分?jǐn)?shù)用以判斷日志之間的一致性。然后,針對動(dòng)態(tài)日志中的反概念漂移設(shè)計(jì)了一種置信度引導(dǎo)的參數(shù)調(diào)整方法,并通過反饋機(jī)制從包含標(biāo)簽、非一致性分?jǐn)?shù)和置信度的可信結(jié)果中更新帶有相應(yīng)標(biāo)簽的分?jǐn)?shù)集,作為后續(xù)檢測的前期經(jīng)驗(yàn)。

      如何區(qū)分同一類內(nèi)的日志之間的不一致性?因?yàn)榕c以前日志的不一致可以用來決定新日志是否屬于該類。

      面對概念漂移問題,如何提高模型的健壯性?由于算法的魯棒性會(huì)反映出動(dòng)態(tài)日志中的準(zhǔn)確性是否降低。

      如何動(dòng)態(tài)更新以前的經(jīng)驗(yàn),并使用所有經(jīng)驗(yàn)來確定新預(yù)測的精確置信度?因?yàn)橹眯哦缺砻魉惴▽z測的確定程度。

      Multi-CAD 主要分為預(yù)處理、不合格度量、多算法聯(lián)合檢測三個(gè)步驟。首先將非結(jié)構(gòu)化原始日志預(yù)處理成結(jié)構(gòu)化特征矩陣。在置信度的引導(dǎo)下,動(dòng)態(tài)地選擇多種算法來構(gòu)成一個(gè)可插入的不合格度量模塊。最后,調(diào)整顯著性級(jí)別,為檢測到的日志條目標(biāo)記一個(gè)有置信度的標(biāo)簽,并反饋給相應(yīng)的類作為后續(xù)檢測的先前經(jīng)驗(yàn)。

      Preprocess:日志解析的目的是提取非結(jié)構(gòu)化原始日志的恒定部分,并形成事件模板。然后,將獲取結(jié)構(gòu)化的日志事件,以便在基于日志的異常檢測中進(jìn)行進(jìn)一步的特征提取。基于不同設(shè)計(jì)技術(shù)的日志解析算法有很多,主要包括頻繁模式挖掘、聚類、啟發(fā)式規(guī)則等。在日志解析之后,需要進(jìn)一步將日志事件編碼成數(shù)字特征矩陣,從而可以應(yīng)用基于日志的異常檢測算法。特征提取器的輸入是日志解析步驟中生成的日志事件,輸出是特征矩陣。為此,特征提取器將使用不同的窗口技術(shù)(固定窗口、滑動(dòng)窗口、會(huì)話窗口等) 來計(jì)算日志事件出現(xiàn)的次數(shù),并形成特征矩陣 (或事件計(jì)數(shù)矩陣)。

      Non-conformity measure:本文提出了一個(gè)可插入的和算法無關(guān)的模塊來計(jì)算非一致性分?jǐn)?shù),在置信度引導(dǎo)下或按需使用適當(dāng)?shù)乃惴ㄗ鳛椴环闲远攘俊Mㄟ^使用多種算法的計(jì)算將獲得一個(gè)統(tǒng)計(jì)值 p_value。與概率不同的是 p_value 基于所有標(biāo)簽相同的分?jǐn)?shù)計(jì)算的。p_value 值越高,新日志與具有相同標(biāo)簽的先前日志之間的一致性越好。很多以前分?jǐn)?shù)較低的日志會(huì)證明新日志更接近這個(gè)類。因此,可以用來檢測新的日志消息是否異常,并獲得一個(gè)具有一定置信度的標(biāo)簽。(多個(gè)不同的算法對日志異常值進(jìn)行打分)。最后,使用 p_value 在新數(shù)據(jù) (即檢測日志分?jǐn)?shù)) 和以前的數(shù)據(jù)集 (即正常分?jǐn)?shù)集和異常分?jǐn)?shù)集) 之間建立連接,這將避免算法決策帶來的錯(cuò)誤,并忽略來自內(nèi)部細(xì)節(jié)和算法實(shí)現(xiàn)的影響。因此,選擇多個(gè)合適的算法來構(gòu)成該模塊,后續(xù)統(tǒng)計(jì)分析后,檢測日志評(píng)分也會(huì)反饋到相應(yīng)的評(píng)分集,作為后續(xù)檢測的現(xiàn)有經(jīng)驗(yàn)。

      Multi-algorithm combined detection:本文設(shè)計(jì)了兩個(gè)置信度導(dǎo)向的動(dòng)態(tài)調(diào)整參數(shù)分別是顯著性水平和多數(shù)決策,將多種算法聯(lián)合起來進(jìn)行檢測。每個(gè)算法都為每個(gè)日志條目檢測獲得一個(gè)有置信度的標(biāo)簽。然后每個(gè)算法給出的多個(gè)標(biāo)簽經(jīng)過顯著性水平過濾后會(huì)形成一個(gè)預(yù)測集。它將用于通過多數(shù)規(guī)則來檢測異常,多算法聯(lián)合決策將減少單個(gè)算法的誤判,提高模型的準(zhǔn)確性和抵抗數(shù)據(jù)分布動(dòng)態(tài)變化的能力。

      基于深度模型的日志序列異常檢測(異常數(shù)據(jù)檢測模型)

      可解釋性日志數(shù)據(jù)異常檢測算法

      日志分析算法是否能夠提供可解釋的結(jié)果對于管理員和日志分析師信任自動(dòng)化分析日志數(shù)據(jù)并采取行動(dòng)至關(guān)重要。一些傳統(tǒng)的機(jī)器學(xué)習(xí)算法具有可解釋性的優(yōu)點(diǎn)。然而,深度學(xué)習(xí)模式雖然在異常檢測上取得了較好的成績,卻被廣泛批評(píng)為黑盒預(yù)言。因此,日志異常檢測算法應(yīng)該繼續(xù)追求更易于解釋和值得信賴的算法。

      Attention-based RNN

      Brown, Andy, et al. “Recurrent neural network attention mechanisms for interpretable system log anomaly detection.” Proceedings of the First Workshop on Machine Learning for Computing Systems. 2018.

      在日志數(shù)據(jù)處理上,相對于 DeepLog 對系統(tǒng)日志的原始文本采用定制的解析方法來生成用于檢測拒絕服務(wù)攻擊的序列,本文的方法直接處理原始文本,除了使用已知的字段分隔符進(jìn)行標(biāo)記化之外,不進(jìn)行任何預(yù)處理。

      本文提出了Fixed Attention, Syntax Attention, Semantic Attention1, Semantic Attention2, Tiered Attention五種注意機(jī)制的來增強(qiáng) RNN 模型在日志異常檢測中的可解釋性。固定注意變量 (Fixed Attention) 和句法注意變量對 (Syntax Attention) 具有固定結(jié)構(gòu)的序列建模是有效的,而語義變量 (Semantic Attention) 對具有不同長度和更松散結(jié)構(gòu)的輸入序列更有效。在保持最先進(jìn)性能的同時(shí),注意機(jī)制提供關(guān)于特征重要性和特征之間關(guān)系映射的信息。此外,可以從應(yīng)用的注意力中收集模型解視,這種方式可以設(shè)計(jì)出更有效的模型。

      基于分布式機(jī)群的節(jié)點(diǎn)故障前置時(shí)間預(yù)測

      計(jì)算機(jī)群規(guī)模的擴(kuò)大使得組件數(shù)量和密度大大增加,導(dǎo)致中間件云服務(wù)器系統(tǒng)可能會(huì)出現(xiàn)更高的故障率。由于缺乏明確的故障指標(biāo),觸發(fā)彈性緩解技術(shù)仍然是一項(xiàng)挑戰(zhàn)。系統(tǒng)日志由非結(jié)構(gòu)化文本組成,這些文本掩蓋了其中包含的基本系統(tǒng)健康信息。在這種情況下,通過日志挖掘進(jìn)行有效的故障預(yù)測預(yù)測前置時(shí)間可以使主動(dòng)恢復(fù)機(jī)制提高可靠性。

      Desh

      Das, Anwesha, et al. “Desh: deep learning for system health prediction of lead times to failure in hpc.” Proceedings of the 27th International Symposium on High-Performance Parallel and Distributed Computing. 2018.

      計(jì)算機(jī)群規(guī)模的擴(kuò)大使得組件數(shù)量和密度大大增加,導(dǎo)致中間件云服務(wù)器系統(tǒng)可能會(huì)出現(xiàn)更高的故障率。本文旨在基于日志挖掘利用遞歸神經(jīng)網(wǎng)絡(luò) LSTM 預(yù)測超級(jí)計(jì)算系統(tǒng)中發(fā)生的節(jié)點(diǎn)故障,并能夠預(yù)測節(jié)點(diǎn)故障的前置時(shí)間。本文提出的 Desh 框架通過對操作系統(tǒng)和軟件組件的日志數(shù)據(jù)進(jìn)行普適性增強(qiáng)培訓(xùn)和分類來實(shí)現(xiàn)故障識(shí)別模型,這種方式避免的對日志數(shù)據(jù)地修改。Desh 使用一種三段深度學(xué)習(xí)方法,首先根據(jù)歷史日志訓(xùn)練識(shí)別導(dǎo)致故障的日志事件鏈;然后重新訓(xùn)練識(shí)別具有預(yù)期故障前置時(shí)間的事件鏈;最后預(yù)測特定節(jié)點(diǎn)發(fā)生故障的前置時(shí)間。

      Desh利用詞嵌入來對日志條目進(jìn)行向量化并計(jì)算故障鏈累積時(shí)間。通過提取這些常量消息,可以將它們編碼為唯一可識(shí)別的數(shù)字。例如一個(gè)編碼的短語序列,節(jié)點(diǎn) N1{45,67,89,40},LSTM 模型無法在這種離散形式的數(shù)據(jù)中理解它們的語義或句法相關(guān)性。日志條目的內(nèi)容一般都是用連字符連接的多詞實(shí)體,使用基于分布式表示的向量空間模型有助于建立語義關(guān)聯(lián),可以用于檢查一系列事件中目標(biāo)事件短語之前和之后出現(xiàn)的內(nèi)容。本文針對 TensorFlow模型使用傳統(tǒng)的 N-gram 模型實(shí)現(xiàn)詞嵌入對這些編碼的短語進(jìn)行向量化。

      本文的節(jié)點(diǎn)故障檢測的 Desh 框架如下圖所示。該框架分為三個(gè)階段,在第一階段,使用詞嵌入的方式將日志條目向量化,并提取導(dǎo)致節(jié)點(diǎn)故障的短語序列,通過 LSTM 模型訓(xùn)練識(shí)別導(dǎo)致故障的日志事件鏈。在第二階段,來自階段一的故障鏈被饋送到 LSTM 模型,以使其能計(jì)算故障鏈中較早的日志事件與指示節(jié)點(diǎn)故障的最終日志事件之間的累積時(shí)間差。在第三階段,第二階段的學(xué)習(xí)使框架能夠估計(jì)未來故障的前置時(shí)間,并根據(jù)與訓(xùn)練數(shù)據(jù)不相交的測試數(shù)據(jù)指示未來發(fā)生故障的位置和前置時(shí)間。

      Desh 框架可以預(yù)測節(jié)點(diǎn)故障前置時(shí)間并跟蹤節(jié)點(diǎn) ID 定位故障點(diǎn)。例如,Desh 要預(yù)警在 2.5 分鐘內(nèi),位于 Y 中的節(jié)點(diǎn) X 預(yù)計(jì)將發(fā)生故障。其節(jié)點(diǎn) ID 可能是(cA-cBcCsSnN) 其中包含準(zhǔn)確的位置信息 (cabinet: AB, chassis: C, blade: S, number: #N) / (機(jī)柜:AB,機(jī)箱:C,刀片:S,編號(hào):#N)。這種告警可提前防止在節(jié)點(diǎn) X 上進(jìn)一步調(diào)度作業(yè),現(xiàn)有的應(yīng)用程序可從該節(jié)點(diǎn)遷移到另一個(gè)健康的節(jié)點(diǎn)。這種主動(dòng)行動(dòng)可以減少服務(wù)中斷和未來的任務(wù)執(zhí)行失敗。

      基于工作流的非深度模型日志異常檢測

      執(zhí)行異常檢測對于大規(guī)模系統(tǒng)的開發(fā)、維護(hù)和性能調(diào)整非常重要。系統(tǒng)控制臺(tái)日志是故障排除和問題診斷的重要來源。但是,由于日志文件的數(shù)量和復(fù)雜性不斷增加,手動(dòng)檢查日志以檢測異常是不可行的。因此,需要基于日志分析對日志數(shù)據(jù)進(jìn)行自動(dòng)化的異常檢測。

      CFG-based LogAnomaly

      Bao, Liang, et al. “Execution anomaly detection in large-scale systems through console log analysis.” Journal of Systems and Software 143 (2018): 172-186.

      本文提出了一種通用的方法來挖掘控制臺(tái)日志,并以此檢測系統(tǒng)問題。首先在計(jì)算系統(tǒng)源代碼中提取日志語句集,生成可達(dá)性圖來揭示日志語句的可達(dá)關(guān)系。然后,通過將日志語句的相關(guān)信息與信息檢索技術(shù)相結(jié)合來解析日志文件以創(chuàng)建日志消息。這些消息根據(jù)它們的執(zhí)行單元被分組到執(zhí)行跟蹤中。本文提出了一種新的異常檢測算法,該算法將蹤跡視為序列數(shù)據(jù),并使用基于概率后綴樹的方法來組織和區(qū)分序列所具有的重要統(tǒng)計(jì)特性。

      本文的核心算法在于一種挖掘日志關(guān)系的分析技術(shù)和基于后綴樹的異常檢測方法。如下圖所示,本文使用的日志分析技術(shù)是一種分析源代碼以恢復(fù)所有日志語句的可達(dá)性圖的技術(shù),這種結(jié)構(gòu)揭示了日志消息的所有可能組合,并且可以通過我們的檢測算法進(jìn)行分析。本文使用的異常檢測方法是一種基于概率后綴樹的統(tǒng)計(jì)方法,該方法可以有效地檢測大量日志消息中的異常模式或異常。

      Source code analysis: 以源代碼為輸入,提取日志語句并生成可達(dá)性圖來顯示任意兩個(gè)日志語句的可達(dá)關(guān)系,并從源碼中獲取日志鍵和參數(shù)變量 log statements。使用源代碼作為參考來理解日志消息之間可能的邏輯關(guān)系,這使得日志分段的準(zhǔn)確性很高,日志分段的準(zhǔn)確性使得能夠從日志文件中提取包含不同類型日志消息的完整執(zhí)行軌跡。

      Log parsing:使用一些預(yù)定義的正則表達(dá)式來解析每個(gè)日志消息,以獲得其行號(hào)、時(shí)間戳、事件級(jí)別、出處和文本內(nèi)容。然后,選擇的日志語句和相應(yīng)的線程標(biāo)識(shí)符構(gòu)成該日志消息,日志行被分為六個(gè)屬性 行號(hào)、時(shí)間戳、層級(jí)、關(guān)聯(lián)的日志鍵、進(jìn)程ID和日志內(nèi)容。對于每個(gè)日志消息,識(shí)別到其相關(guān)日志語句的鏈接,并記錄相應(yīng)的線程標(biāo)識(shí)符。本算法使用這種鏈接將日志消息與以前生成的可達(dá)性圖相關(guān)聯(lián),并在跟蹤提取階段通過線程標(biāo)識(shí)符將相關(guān)的日志消息分組在一起。

      Execution trace extraction:從日志消息中提取執(zhí)行軌跡,提取算法首先對日志消息進(jìn)行分割,然后根據(jù)可達(dá)性圖中顯示的可達(dá)關(guān)系提取不同的軌跡。

      Anomaly detection:先為所有的執(zhí)行軌跡定義軌跡異常索引,將執(zhí)行軌跡視為序列數(shù)據(jù),并使用序列聚類分析的方法,一種后綴樹的變體,即概率后綴樹,被用來組織和探索序列所具有的重要統(tǒng)計(jì)特性。

      ADR

      Zhang, Bo, et al. “Anomaly Detection via Mining Numerical Workflow Relations from Logs.” 2020 International Symposium on Reliable Distributed Systems (SRDS). IEEE, 2020.

      本文提出了一種新的工作流關(guān)系異常檢測方法,該方法利用矩陣零空間從日志數(shù)據(jù)中挖掘數(shù)值關(guān)系。這些挖掘出的關(guān)系可用于離線和在線異常檢測,并可以用于故障診斷。對于在線異常檢測,ADR (工作流關(guān)系異常檢測 ) 算法采用粒子群優(yōu)化算法尋找最優(yōu)滑動(dòng)窗口大小,實(shí)現(xiàn)快速異常檢測。

      首先,將原始日志數(shù)據(jù)解析為結(jié)構(gòu)化日志事件,計(jì)算事件的發(fā)生次數(shù),并構(gòu)建一個(gè)擴(kuò)展的事件計(jì)數(shù)矩陣。然后,計(jì)算矩陣的零空間,矩陣零空間涵蓋像順序或條件工作流這種簡單工作流和經(jīng)過簡單工作流組合的復(fù)雜工作流中的關(guān)系。使用這種日志解析方法,可以自動(dòng)提取日志事件之間的關(guān)系,并將算法檢測到的違反關(guān)系可用于異常識(shí)別,同時(shí)可以用于解釋異常提搞算法的可解釋性。

      然后,通過使用粒子群優(yōu)化算法PSO搜索動(dòng)態(tài)選擇合適的窗口大小,例如使用會(huì)話或滑動(dòng)窗口將解析的日志事件分組為序列;對于每個(gè)會(huì)話或窗口,對其日志事件的發(fā)生進(jìn)行計(jì)數(shù),產(chǎn)生事件計(jì)數(shù)矩陣;接著,通過評(píng)估事件計(jì)數(shù)矩陣的零空間,從事件計(jì)數(shù)矩陣中提取可用的數(shù)值關(guān)系;最后,提取的關(guān)系用于以離線或在線方式檢測異常日志序列。

      并發(fā)場景的非深度模型日志異常檢測

      云系統(tǒng)一直都受到分布式并發(fā)錯(cuò)誤的困擾,因?yàn)檎_推理和處理多臺(tái)機(jī)器上的并發(fā)執(zhí)行太過于復(fù)雜。現(xiàn)實(shí)世界的分布式系統(tǒng)中廣泛存在并發(fā)錯(cuò)誤,而且這種錯(cuò)誤難以檢測,同時(shí)這寫錯(cuò)誤通常會(huì)導(dǎo)致數(shù)據(jù)丟失,有時(shí)會(huì)導(dǎo)致服務(wù)中斷,帶來巨大的損失。為此,需要一種能夠?qū)狗植际讲l(fā)缺陷的新策略。

      CloudRaid

      Lu, Jie, et al. “Cloudraid: hunting concurrency bugs in the cloud via log-mining.” Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 2018.

      本文提出了一種稱為 CloudRaid 的分布式并發(fā)錯(cuò)誤對抗策略。CloudRaid 通過分析和測試那些可能暴露錯(cuò)誤的消息順序,自動(dòng)檢測云系統(tǒng)中的并發(fā)錯(cuò)誤。本文關(guān)注大規(guī)模在線云應(yīng)用程序處理用戶請求被廣泛使用的消息排序排列。CloudRaid 從歷史任務(wù)執(zhí)行中挖掘日志數(shù)據(jù),以發(fā)現(xiàn)那些可以執(zhí)行但沒有充分測試的消息順序正確性的消息排序。例如, 這樣一對消息,它們可以并行發(fā)生,但是日志事件中 s 的日志總是在 p 之前到達(dá),即執(zhí)行順序是p 依賴于 s。

      CloudRaid 主要步驟如下圖所示:首先將靜態(tài)消息的日志模式表示為正則表達(dá)式 < C,F(xiàn),L >。然后進(jìn)行日志分析,使用日志模式將每個(gè)運(yùn)行時(shí)日志實(shí)例映射到一個(gè)靜態(tài)消息。ID 分析中根據(jù)記錄變量與根據(jù)日志分析得到的其運(yùn)行時(shí)間值之間的相關(guān)性;通過分析記錄值之間的關(guān)系,將來自同一運(yùn)行的消息可以與其他運(yùn)行消息區(qū)分開來,并組合在一起。HB分析用于靜態(tài)分析靜態(tài)消息之間的先發(fā)生順序。在消息對分析中使用來自 HB 分析和 ID 分析的分析結(jié)果,以選擇用于進(jìn)一步測試的消息順序。最后,觸發(fā)器將使用源代碼來執(zhí)行所選的消息排序,以發(fā)現(xiàn)執(zhí)行正確但未充分測試的消息排序。

      Communication analysis 將每個(gè)靜態(tài)消息表示為 3 個(gè)元素的元組 < C,F(xiàn),L >,其中 C 是發(fā)送消息的客戶端,F(xiàn) 是對應(yīng)的消息處理程序,L 是表達(dá)其日志模式的正則表達(dá)式。

      3 EventProcessor.run Launching attempt_* 11 ContainerManagerImpl.startContainer Start request for container_*

      Log analysis 日志分析試圖將每個(gè)運(yùn)行時(shí)日志實(shí)例與消息日志模式相匹配。日志實(shí)例被表示為一個(gè)元組,其中M是靜態(tài)消息,Val記錄了日志變量的運(yùn)行時(shí)值

      ID analysis 在分布式系統(tǒng)中,ID Values通常用于區(qū)分不同的請求和任務(wù),基于 ID Values 進(jìn)行ID分析,具有相同 ID Values的日志實(shí)例被分組在一起執(zhí)行任務(wù)。一個(gè)任務(wù)用一個(gè) ID Values進(jìn)行索引,并可以進(jìn)一步劃分為子任務(wù)。如果兩個(gè)任務(wù)的 ID Values相關(guān),則它們是相關(guān)的。一個(gè)任務(wù)是另一個(gè)任務(wù)的子任務(wù),如果它的 ID Values是另一個(gè)任務(wù)的子標(biāo)識(shí)。

      HB analysis 分析靜態(tài)消息之間的可傳遞的先發(fā)生關(guān)系,例如 P: S:,如果 C2 在 F1中則P先于S發(fā)生,如果 C1 可以通過 RPC 控制 C2,則 P 也先于 S 發(fā)生。

      Message Pair Analysis 對 HB Analysis 的消息關(guān)系的進(jìn)一步檢測,過以成對的方式比較它們的日志實(shí)例來檢查 p 和 s 是否相關(guān),以及 P > S 的順序是否已經(jīng)被執(zhí)行。

      Trigger 通過維護(hù)一個(gè)運(yùn)行時(shí)的狀態(tài)機(jī)來檢測系統(tǒng)執(zhí)行所選的消息順序是否存在異常

      云原生 云日志服務(wù) LTS 日志分析服務(wù) LOG 機(jī)器學(xué)習(xí) 深度學(xué)習(xí)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:華為云鯤鵬ECS安裝開源版本領(lǐng)課教育系統(tǒng)roncoo-education
      下一篇:持續(xù)交付,持續(xù)部署,傻傻分不清楚(持續(xù)交付 持續(xù)部署)
      相關(guān)文章
      亚洲一级毛片在线播放| 亚洲日本一区二区三区在线| 一级毛片直播亚洲| 亚洲经典千人经典日产| 亚洲婷婷五月综合狠狠爱| 亚洲av无码国产精品色在线看不卡| 国产 亚洲 中文在线 字幕 | 亚洲AV无码无限在线观看不卡| 久久亚洲精品成人AV| 久久久久亚洲精品影视| 亚洲国产精品热久久| 亚洲乱亚洲乱妇无码麻豆| 亚洲国产精品一区二区三区久久| 久久精品国产亚洲AV| 亚洲GV天堂GV无码男同| 国产精品亚洲精品久久精品| 含羞草国产亚洲精品岁国产精品 | 亚洲理论片在线观看| 亚洲最新黄色网址| 亚洲AV无码国产精品色| 国产成+人+综合+亚洲专| 中文字幕乱码亚洲精品一区 | 亚洲人成人伊人成综合网无码 | 亚洲av午夜福利精品一区人妖| 午夜亚洲国产理论秋霞| 亚洲一区二区三区夜色| 亚洲国产美女精品久久| 中文文字幕文字幕亚洲色| 亚洲欧美成人综合久久久| 亚洲av纯肉无码精品动漫| xvideos亚洲永久网址| 久久青青草原亚洲av无码| 亚洲精品无码鲁网中文电影| 久久精品国产亚洲夜色AV网站| 亚洲另类激情综合偷自拍| 亚洲欧洲综合在线| 亚洲综合av一区二区三区| 成人伊人亚洲人综合网站222| 国产亚洲精aa成人网站| 亚洲AV无码成人专区片在线观看| 亚洲美女激情视频|