基于深度學習日志數據異常檢測

      網友投稿 1806 2022-05-29

      數據對象

      智能運維(AIOps)是通過機器學習等算法分析來自于多種運維工具和設備的大規模數據。智能運維的分析數據對象多源運維數據包括系統運行時數據和歷史記錄數據,歷史記錄數據主要包含表單和系統更新文檔等。與歷史記錄數據相比,系統運行時數據能夠反映系統的動態特征及系統發生故障時的上下文信息,對未知故障具有更好的探測和表達能力。

      系統運行時數據主要包含監控數據和日志數據,監控數據記錄的是指系統運行狀態下的資源占用情況,如中央處理器使用率、內存使用率、網絡流量、進程數目以及進程資源使用率等;日志數據是程序開發人員為輔助調試在程序中嵌入的打印輸出代碼所產生的文本數據,用以記錄程序運行時的變量信息、程序執行狀態等。監控數據關注系統狀態和粗粒度的應用狀態,如進程狀態、服務狀態等;而日志數據關注細粒度的應用狀態和跨組件的程序執行邏輯,能夠定位到特定的日志及事件信息,同時能夠定位異常請求實例即分布式跨組件的日志輸出序列可以在一定程度上反映該請求的執行軌跡,因此日志數據更加適用于故障診斷任務。

      典型的分布式軟件系統日志包括兩類:事務型日志和操作型日志。事務型日志表征請求或事務執行邏輯,操作型日志表征諸如心跳、消息分派等獨立事件。事務型日志之間一般存在明顯因果關聯關系,例如云平臺中云控制器通過日志記錄查找容器、解析參數以及報告請求執行狀態等請求執行步驟。操作型日志之間一般是相互獨立的,每一條日志代表一個獨立事件,例如負責協調應用程序并跟蹤程序狀態的監控組件通過日志接收和保存來自其他組件的心跳。

      基于深度學習的日志數據異常檢測

      基于日志數據的故障診斷過程

      軟件系統的故障診斷目的是在系統行為異常階段,檢測系統表征的異常信息,預測未來可能發生的故障,分析引發故障的根因。根因、異常和故障三個階段之間具有時序和因果關系,已經出現的故障根因導致了系統現在的異常行為,進而在未來可能引發系統故障,其關系示意圖如下所示:

      基于日志數據的故障診斷過程一般以下四種關鍵技術,分別是日志處理與特征提取、基于日志數據的異常檢 測、基于日志數據的故障預測和基于日志數據的根因分析。

      日志處理與特征提取日志是程序開發人員在軟件系統開發過程中為了記錄系統運行狀態和特殊事件而打印的文本信息,具有半結構化的特征。另外,現代軟件系統的日志具有兩種顯著分別是大規模和異構性,集群式的系統中日志規模巨大,同時由于各個組件設計各異使得其日志記錄的風格和質量都有很大差異。因此,為降低日志數據的復雜性,消除大量噪音并有效提取特征,日志處理與特征提取技術利用機器學習、模式識別、統計分析、自然語言處理等方法,分析和挖掘日志數據特征信息,得到日志模板或特征向量為異常檢測、故障預測和根因分析提供數據基礎。

      基于日志數據的異常檢測即在系統日志數據中發現不符合預估行為的異常模式,其輸出通常是日志片段是否屬于異常的標簽或日志片段包含系統異常信息的概率,評測指標通常包括精確率(precision)、召回率(recall)和綜合評價指標F值(F-measure)。

      基于日志數據的故障預測即通過當前日志數據預測在不遠的將來是否會發生系統故障。其輸出通常是系統未來是否會出現故障的標簽或出現故障的概率,評測指標通常包括精確率、召回率、綜合評價指標F 值和前置時間(lead-time)。

      基于日志數據的根因分析即通過日志數據診斷與系統故障相關的根因信息,如故障類型、故障位置、故障請求、故障代碼片段等。故障根因診斷技術的輸出即為多種類型的故障根因信息,評測指標通常包括精確率(precision)、召回率(recall)和綜合評價指標F值(F-measure)。

      日志處理與特征提取

      日志處理與特征提取主要有日志模板挖掘技術和日志特征提取技術兩種,用以從降低日志文本的異構復雜性、從海量日志中提取有價值的信息。日志模板挖掘關注于日志中的常量部分,日志特征提取則關注于日志中的變量部分或其他特征。日志模板挖掘技術可以劃分為基于靜態代碼分析、基于頻繁項集挖掘和基于聚類的日志模板挖掘技術;日志特征提取技術可以劃分為基于自然語言處理的日志特征提取技術、基于規則的結構化日志信息提取技術和基于統計模型的日志特征提取技術,如下圖所示:

      Spell 基于最長公共子串的日志解析方法

      01 文獻來源

      Du M , Li F . Spell: Online Streaming Parsing of Large Unstructured System Logs[J]. IEEE Transactions on Knowledge and Data Engineering, 2018, PP:1-1.

      02 文獻目標

      將非結構化系統日志解析為結構化數據:已經有很多研究在解決這一問題,例如,使用正則表達式,基于源代碼,或者使用數據挖掘方法如聚類和迭代分區等。然而,這些方法大都需要有特定領域的知識北京,因此,不適用于組成復雜的系統日志解析。

      采用在線流處理的方式進行日志解析:目前的在線處理實現是先進行大量的離線處理,然后才通過離線批處理過程將日志條目與首先識別的數據結構和模式進行匹配,顯然這種方法效率較低。

      03 文獻貢獻

      提出了基于LCS(最長公共子序列)的日志解析方法:Spell是一種基于LCS的在線流處理日志解析方法,用于事件日志的結構化流式解析,實現了動態接受日志輸入,實時處理輸入,不斷生成新的日志模板。

      實驗證明Spell日志解析方法的有效性:使用三種最先進的方法自動從原始日志文件中提取消息類型和參數作為競爭基準,實驗表明,與最先進的方法相比,Spell在效率和有效性方面都優于它們。

      04 主要算法

      基于LCS的流式日志解析方法的關鍵在于維護一個存儲日志鍵和其他信息的數據結構LCSMap。LCSMap中表示每一個具體日志鍵內容的數據結構LCSObject包含兩部分內容,一部分是已解析的LCS序列LCSseq,另一部分是記錄參數位置列表的paramPos。在維護過程中,當有新的日志記錄到達時,首先進行預過濾搜索前綴樹中現有日志鍵;如果未發現匹配的日志鍵,進一步在倒排索引中查找匹配的日志鍵;最后,如果仍未找到匹配的日志鍵,使用簡單的循環遍歷方法將其與LCSMap中保存的所有日志鍵進行比較,并相應地更新LCSMap;如果遍歷之后仍然無匹配日志鍵,則計算并創建一個新的LCSObject保存該日志鍵并插入到LCSMap中。在LCSMap的維護中可能出現日志鍵元素被錯判斷為參數和參數數量過多時參數被錯判斷為日志鍵元素的情況,這兩種情況在本方法中通過定期應用拆分和合并過程以清理當前已解析的日志鍵。該算法具體流程如下圖所示:

      一個使用最長公共子序列提取日志鍵的示例如下圖所示:

      Drain 基于固定深度樹的日志解析方法

      01 文獻來源

      He P , Zhu J , Zheng Z , et al. Drain: An Online Log Parsing Approach with Fixed Depth Tree[C]// 2017 IEEE International Conference on Web Services (ICWS). IEEE, 2017.

      02 文獻目標

      系統日志數據規模擴大:一個大型服務系統每小時產生的日志數據量可以達到50GB,這讓日志解析任務難以使用人工有效完成。

      系統日志數據多樣性增加:隨著開源平臺和Web服務的流行,一個系統通常由許多不同開發人員編寫的組件組成,則使得傳統的依賴正則表達式進行日志解析的方式變得更加困難。

      日志語句高頻率地更新:現代計算系統中,計算任務變得越來越復雜且多變,這使得多種多樣的組件產生日志消息的日志語句也在頻繁地更新,這讓日志解析變得更加困難。

      在線日志解析器還存在效率與精確的缺陷:大多數現有的日志解析器都側重于脫機、批處理,這種方法顯然很低效無法及時獲取日志反應的消息。當下也有一些在線日志解析器,它們不需要離線訓練步驟采用流式的日志解析方式,但是它們任然存在不夠精確和高效的問題。

      03 文獻貢獻

      基于固定深度樹的在線日志解析方法Drain:該方法能夠以流的方式準確、高效的解析原始日志信息。可以從原始日志消息中自動提取日志模板,并將其分割為互不關聯的日志組。使用一個具有固定深度的解析數來指導日志組搜索過程,這有效地避免了構造一個非常深且不平衡的數。另外,專門設計的解析規則被壓縮編碼在解析樹節點中。

      實驗證明了Drain方法的有效性:在五個真實世界的測試數據集上進行了廣泛的實驗,驗證了Drain方法在準確性和效率方面的優勢。

      公布了源碼:https://appsrv.cse.cuhk.edu.hk/~pjhe/Drain.py

      04 主要算法

      日志解析的目標是將原始日志消息轉換為結構化的日志消息。具體來說,原始日志消息是非結構化數據,包括時間戳和原始消息內容等。在解析過程中,解析器區分每個原始日志消息的常量部分和變量部分,常量部分是描述系統操作模板的令牌;而變量部分是其余的標記的動態運行是系統信息。典型的結構化日志消息包含匹配的日志事件和感興趣的字段。

      Drain是一種基于固定深度樹的在線日志解析方法。當一個新的原始日志消息到達時,Drain將根據領域知識通過簡單的正則表達式對其進行預處理。然后搜索一個日志組,即為通過遵循編碼在數內部節點中的特殊設計的規則,樹的葉子節點。如果找到合適的日志組,日志消息將與存儲在該日志組的日志事件匹配。否則,將根據日志消息創建一個新的日志組。

      基于日志數據的異常檢測

      基于日志數據異常檢測的目的是在線地對系統進行日志收集與分析,在系統日志中找到不符合預估行為的模式。其主要思路是從系統正常運行的日志數據中學習“健康”狀態模型,故障探測過程通過尋找是否有與“健康”狀態模型沖突的在線數據。由于日志數據與分布式軟件系統的復雜性,基于日志數據的異常檢測面臨兩個關鍵性挑戰。

      日志數據中的異常表征復雜多樣,難以有效捕獲。日志數據中的異常可能包含分布異常、序列異常、變量異常等,如何構造有效的異常檢測模型以捕獲復雜的異常成為一個技術上的挑戰。

      從海量日志數據中精準發現少量異常是一個難點。日志數量龐大,異常表征往往會隱藏在海量日志中,如何構造高效的異常檢模型快速過濾海量日志并發現其中的異常成為一個技術上的挑戰。

      現有的基于日志數據的異常檢測方法主要分為3 類,分別是基于圖模型的異常檢測、基于概率分析的異常檢測和基于機器學習的異常檢測。基于圖模型的異常檢測對日志的序列關系、關聯關系以及日志文本內容進行建模;基于概率統計的異常檢測采用關聯分析、對比等,計算日志與異常的關聯概率;基于機器學習的異常檢測采用聚類算法找到離群值或分類算法學習故障時的日志模式,判斷在線日志數據是否符合這些日志模式。

      基于LSTM的日志數據異常檢測

      主機系統運行過程中會產生各種各樣的日志,日志記錄了計算機運行時的狀態和系統執行的各種操作,是在線監視和異常檢測的良好信息來源,因此對系統日志的審計可以作為主機異常檢測的重要手段。市場早已經存在各種各樣的安全審計系統,比如日志審計系統、入侵檢測系統(intrusion detection system,IDS)等,這些系統可以實現日志的采集、審計和異常行為挖掘的功能。但是在實際使用中,由于日志的差異和日志審計手段的單一落后,這些系統往往只適用于特定類型的主機,且能檢測到的異常行為不夠全面和準確。

      近年來,隨著機器學習的發展,數據挖掘能力進一步提升,基于機器學習進日志審計的研究成果不斷出現。但是對于不同的主機系統和進程,其產生的日志類型是不一致的,傳統機器學習檢測方法需要對不同類型的日志使用不同的特征提取方法,需要使用者有專業的知識背景才能更好的抽取日志的特征信息。在現實情況中日志的種類和語法是在不斷更新的,某一種方法無法直接應用于多個系統,需要花費大量人力成本來做更新和匹配。相對比較高級的就是使用深度學習來做異常檢測。系統日志的數據量越來越大已經足夠深度學習模型進行學習處理,在參數合適的情況下,幾乎不需要人工提取特征,深度學習模型就能很好的完成日志檢測。下面主要討論如何利用LSTM模型來實現日志的異常檢測。

      DeepLog 基于LSTM深度模型的系統日志異常檢測

      01 文獻來源

      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.

      02 文獻目標

      非結構化的系統日志:系統日志格式和語義在不同系統之間有很大差異,一些現有的方法使用基于規則的方法來解決這個問題,但是規則的設計依賴于領域知識,例如工業界常用的正則表達式。 更重要的是,基于規則的方法對于通用異常檢測來說并不適用,因為我們幾乎不可能預先知道不同類型日志中的關注點是什么。

      時效性:為了用戶能夠及時的發現系統出現的異常,異常檢測必須要及時,日志數據以數據流的形式輸入,意味著需要對整個日志數據做分析的方法不適用。

      異常種類多樣性:系統和應用程序可能會產生多種類型的異常。異常檢測系統應該不僅針對于特定的異常類型,還能檢測未知的異常。同時,日志消息中也包含了豐富的信息,比如log key、參數值、時間戳等。大多數現有的異常檢測方法僅僅分析了日志消息的特定部分(比如log key),這限制了它們能檢測到的異常類型。

      并發:基于執行路徑的異常檢測是依據單個任務產生的日志記錄來實現的,而計算系統的并發將使得并發的線程在同一時刻產生多條日志記錄,這使得基于執行路徑的異常檢測變得復雜。

      03 文獻貢獻

      使用LSTM神經網絡設計DeepLog框架:DeepLog不僅在日志條目中使用日志鍵,還使用度量值進行異常檢測,因此,它能夠捕獲不同類型的異常。 DeepLog僅取決于小的訓練數據集,該數據集由一系列“正常日志條目”組成。 在訓練階段之后,DeepLog可以識別正常的日志序列,并可以以流方式用于對傳入日志條目進行在線異常檢測。

      04 總體架構

      DeepLog的總體架構如下圖所示,分為訓練和檢測兩個階段。在訓練階段,大量的系統日志數據被日志解析器解析為日志鍵和一個參數值向量的組合;然后使用這些日志鍵序列來訓練一個日志鍵異常檢測模型,并構建用于診斷目標系統執行工作流模型。對于不用的日志鍵,用它們的參數值向量訓練一個參數值異常檢測模型來檢測有這些參數值反映的系統性能異常。在檢測階段,當一個新的日志記錄到達時,它也被日志解析器解析為一個日志鍵和一個參數值向量的組合,然后使用對應內容經過對應異常檢測模型進行檢測,如果任一檢測模型檢測結果為異常,則將其標記為異常日志記錄。

      Multimodal LSTM 基于系統跟蹤數據的多模態深度學習的異常檢測

      01 文獻來源

      Nedelkoski, Sasho, Jorge Cardoso, and Odej Kao. "Anomaly detection from system tracing data using multimodal deep learning." 2019 IEEE 12th International Conference on Cloud Computing (CLOUD). IEEE, 2019.

      02 文獻目標

      當前最先進的使用日志數據進行異常檢測的系統將正常的系統行為建模為單一的數據類型,即文本日志關鍵字或真實值的性能參數。通常,他們對這兩種類型的數據使用單獨的模型,并建立一個集合來生成最終的預測。但是,這種加性模型沒有利用數據源之間的現有相關性,僅僅從部分能夠反映系統整體性能的數據中了解正常的系統行為。在系統操作執行期間收集的跟蹤數據包括不同相關服務調用生成的存在因果關系的日志記錄等信息和實值數據形式的服務響應時間兩種形式,而利用這種多模態數據融合表示系統行為能夠更好的反映系統狀態,為此這篇文章研究從連續多模態數據中進行無監督異常檢測的方法。

      03 文獻貢獻

      這篇文章使用LSTM神經網絡和來自分布式跟蹤技術的數據來解決云基礎設施中的異常檢測。首先,提出了一中針對時間序列學習的LSTM深度學習模型,使用單一模態、序列文本數據來模擬跟蹤中服務之間的因果關系。以此為基礎,擴展單模態體系結構,構建多模態體系結構利用多模態跟蹤數據作為事件文本記錄和實值序列的組合,該多模態方法不僅可以用于建模正常的系統行為,還可以用于檢測異常,不僅考慮了服務的因果關系,還考慮了它們在跟蹤中的響應時間。此外,該文章還使用該模型來重構執行路徑,從而到達檢測相關任務和并行任務的目的。最后,該文通過對真實生產云數據的詳盡實驗,驗證了多模態LSTM達到了最佳的整體準確率優于基線。

      04 總體架構

      如下圖所示,介紹的是事件文本記錄數據(結構異常檢測,Structural Anomaly Detection,SAD)和響應時間實值數據(響應時間異常檢測,Response Time Anomaly Detection,RTAD)兩種數據類型的單模態異常檢測架構。模型的輸入是相關服務的按時間戳事件文本記錄序列,或對應服務調用的響應事件。輸出是針對當前輸入序列推測下一時間點發生事件或響應時間的的概率分布。檢測階段使用該模型進行預測,并將預測輸出與觀察到的標簽值進行比較,從一系列標簽中檢測異常使得能夠在執行期間捕獲錯誤以及檢測意外的執行路徑。

      基于上述兩種單模態體系結構,對其進行水平拼接提出多模態LSTM體系結構。該模型的輸入包含事件文本記錄數據和響應時間實值數據兩種數據模式。從架構的自下而上的角度來看,該模型為每個輸入設置一個帶有LSTM塊的層,并在第二個隱藏層中執行連接,出了這一選擇外,拼接可以在交叉驗證選擇的任何隱藏層中進行。這兩種模式的合并是通過將來自第一層的LSTM輸出在相同時間上被合并并轉發到下一個LSTM層的相同時間步長中完成。如下圖所示,顏色編碼方案表示串聯的對,從級聯層開始,信息被聯合編碼并在模態之間流動,根據這種聯合表示,多對多神經網絡學習到輸出的映射。

      基于全鏈路追蹤技術的異常檢測

      微服務架構被廣泛應用與大規模的Web服務,策略獨立的服務模塊,使得服務更新和部署更加便利,但是各種各樣微服務之間的復雜關系和巨大的微服務規模使得保證服務提供的可靠性更加困難。為了保證微服務架構的可靠性,需要準確高效的故障排除,而調用軌跡異常檢測是該過程的重要環節。管理人員通過檢測到的異常調用軌跡對故障根因進行分析和定位。

      當下工業界還是以微服務調用和運行狀態代碼為基礎,人工制定復雜的規則來檢測異常的調用軌跡。對于規模越來越大、復雜度越來越高的微服務架構,這種方式顯然是十分低效甚至是不可行的,為此,以全鏈路追蹤技術為基礎,設計算法可以自動化地學習復雜調用軌跡模式,并以此來識別異常調用軌跡。

      分布式服務的跟蹤系統需要記錄在一次特定的請求后系統中完成的所有工作的信息。如下圖所示展現的是一個和5臺服務器相關的一個服務,包括:前端(A),兩個中間層(B和C),以及兩個后端(D和E)。當一個用戶發起一個請求時,首先到達前端,然后發送兩個RPC到服務器B和C。B會馬上做出反應,但是C需要和后端的D和E交互之后再返還給A,由A來響應最初的請求。對于這樣一個請求,簡單實用的分布式跟蹤的實現,就是為服務器上每一次你發送和接收動作來收集跟蹤標識符(message identifiers)和時間戳(timestamped events)。

      Dapper 大規模分布式系統的跟蹤系統

      01 文獻來源

      Sigelman, Benjamin H., et al. "Dapper, a large-scale distributed systems tracing infrastructure." (2010).

      02 文獻目標

      Dapper的兩點主要要求是:無所不在的部署,持續的監控。無所不在的重要性不言而喻,因為在使用跟蹤系統的進行監控時,即便只有一小部分沒被監控到,那么人們對這個系統是不是值得信任都會產生巨大的質疑。另外,監控應該是7x24小時的,畢竟,系統異常或是那些重要的系統行為有可能出現過一次,就很難甚至不太可能重現。那么,根據這兩個明確的需求,Dapper的三個具體設計目標如下:

      低消耗:跟蹤系統對在線服務的影響應該做到足夠小。在一些高度優化過的服務,即使一點點損耗也會很容易察覺到,而且有可能迫使在線服務的部署團隊不得不將跟蹤系統關停。

      應用級的透明:對于應用的程序員來說,是不需要知道有跟蹤系統這回事的。如果一個跟蹤系統想生效,就必須需要依賴應用的開發者主動配合,那么這個跟蹤系統也太脆弱了,往往由于跟蹤系統在應用中植入代碼的bug或疏忽導致應用出問題,這樣才是無法滿足對跟蹤系統“無所不在的部署”這個需求。面對當下想Google這樣的快節奏的開發環境來說,尤其重要。

      延展性:Google至少在未來幾年的服務和集群的規模,監控系統都應該能完全把控住。

      03 文獻貢獻

      相較于研究型的Pinpoint、Magpie和X-Trace,Google提出的Dapper已經在大規模生產環境中摸爬滾打了多年,經過這么多生產環境的驗證之后,這篇論文重點闡述在部署Dapper的過程中的設計思想,以及最有效的使用方式。Dappe作為一個平臺,承載基于Dapper開發的性能分析工具,以及Dapper自身的監測工具,它的價值在于可以在回顧評估中找出一些意想不到的結果。

      在分布式跟蹤這個領域中,Dapper的實現包含了許多新的貢獻。例如,為了實現實現低損耗,特別是在高度優化的而且趨于極端延遲敏感的Web服務中,合理的采樣率是很必要的。Dapper的另一個重要的特征,是能實現應用級透明,該的組件對應用的侵入被先限制在足夠低的水平上,即使想Google網頁搜索這么大規模的分布式系統,也可以直接進行跟蹤而無需加入額外的標注(Annotation)。

      04 總體架構

      Dapper設計的主要思想在于對基礎RPC、線程控制和流程控制的通用組件庫的值入,其中包括span的創建、采樣率的設置,以及日志寫入本地磁盤,以此來實現跟蹤系統的低消耗和應用級透明。

      Dapper使用以span為基本樹節點的跟蹤樹構建跟蹤模型,如下圖所示,Dapper 為每個 span 記錄了一個可讀的span name、span id和 parent id,這樣就能重建出一次分布式跟蹤過程中不同 span 之間的關系。沒有parent id 的 span被稱為 根span。一次特定跟蹤的所有相關 span 會共享同一個通用的trace id 。在一個典型的 Dapper 跟蹤中,期望是每個 RPC 對應一個 span,每一個組件層對應跟蹤樹上的一個層級。

      Dapper通過在部分通用庫中進行性能測量埋點,實現應用級透明路徑跟蹤。(a)當一個線程處理被跟蹤的控制路徑時,Dapper 會把一個跟蹤上下文存儲到Thread Local中;跟蹤上下文是一個小而容易復制的容器,里面包含了 trace id 和 span id 等 span屬性。(b)當計算過程是延遲調用或異步執行時,開發者一般會使用一個通用的控制流程庫來構造回調函數,并用線程池或其他 executor 來執行回調;Dapper 確保所有的回調都會存儲其創建者的跟蹤上下文,而當執行回調時這個跟蹤上下文會關聯到合適的線程上,通過這種方式,Dapper 用于重建跟蹤的 ID 也能透明地用于異步控制流程。(c)Dapper 的跟蹤數據是語言無關的,生產環境中的許多跟蹤結合了 C++ 和 Java 進程中的數據。

      Dapper 的一個關鍵設計目標是低損耗,Dapper跟蹤系統的成本由兩部分組成,一是正在被監控的系統在生成追蹤和收集追蹤數據的消耗導致系統性能下降;二是需要使用一部分資源來存儲和分析跟蹤數據。Dapper主要針對采樣率進行優化,以實現低損耗,包含適應性采樣、應對激進采用和收集過程中的額外采樣三種采樣策略。

      最后,介紹以下Dapper的跟蹤收集過程,如下圖所示,Dapper 的跟蹤記錄和收集管道分為三個階段。首先,把 span 數據寫入(1)到本地日志文件。然后 Dapper 守護進程從所有生產主機中將他們拉取出來(2),最終寫入(3) 到 Dapper 的 Bigtable 倉庫中。Bigtable 中的行表示一次跟蹤,列表示一個 span。Bigtable 對稀疏表格布局的支持正適合這種情況,因為每個跟蹤都可能有任意多個 span。跟蹤數據收集即將應用程序二進制數據傳輸到中央倉庫,其延遲中位數小于 15 秒。98 分位延遲呈現雙峰形;大約 75% 時間里,98 分位延遲小于 2 分鐘,但是在另外 25% 時間里可能會漲到幾小時。

      TraceAnomaly 基于深度學習的調用軌跡異常檢測算法

      01 文獻來源

      Liu, Ping, et al. "Unsupervised Detection of Microservice Trace Anomalies through Service-Level Deep Bayesian Networks." 2020 IEEE 31st International Symposium on Software Reliability Engineering (ISSRE). IEEE, 2020.

      02 文獻目標

      以可解釋的方式統一跟蹤的響應時間和調用軌跡:

      由于微服務架構的復雜關系,沒有異常的微服務調用也可能出現不同的響應時間,因為其響應時間不僅取決于其自身和其處于的調用軌跡也存在著重要關聯。

      異常和正常的調用軌跡可能具有一致的調用結構,而響應時間是可能區分他們的唯一方式。

      檢測到異常調用軌跡后要進行故障根因分析,若以現有的故障根因匹配存在一定的局限性,那就是當出現無法匹配的根因時無法正確定位故障根因,這時具有解釋性的響應時間和調用軌跡將可以幫助管理人員分析根因。

      設計一種健壯的無監督調用軌跡特征學習體系結構:

      對于包含許多微服務的單個服務,可能有數百條單獨的調用軌跡,因此需要根據其調用軌跡來學習數百個響應時間分配。 針對如此復雜的情況,需要一個大容量的學習模型。

      由于無法在如此復雜的上下文中使用大量數據來獲取異常標簽,因此需要使用無監督學習算法。

      03 文獻貢獻

      提出了一種服務調用軌跡特征構造方法STV:該方法可以有效地對跟蹤的響應時間信息和調用路徑信息進行編碼,并可以在服務級別進行有效學習,在跟蹤級別進行準確的異常檢測,并在微服務級別進行有效的定位。

      提出了一種針對調用軌跡異常檢測的無監督學習方法TraceAnomaly:該方法以深度貝葉斯網絡為基礎,添加后流(posterior flows)可以使用非線性映射來增加貝葉斯網絡中潛在變量的復雜度,從而允許模型以健壯,準確和無監督的方式捕獲復雜調用軌跡模式。

      使用TrainTicket詳細測試了本文提出微服務調用軌跡異常檢測方法的有效性。

      以STV為基礎提出了一種故障根因定位算法。

      04 總體架構

      TraceAnomaly通過周期性的線下訓練去自動地學習調用軌跡的正常模式。在線上異常檢測的時候,基于學習到的正常模式計算新的調用軌跡的異常分數。如果分數過小,則新的調用軌跡被判定為異常調用軌跡。TraceAnomaly通過基于后驗流的深度貝葉斯網絡設計,實現了非監督的針對Web服務調用軌跡的異常檢測。如下圖所示,TraceAnomaly的深度貝葉斯網絡的結構,非監督學習是通過左邊的編碼網絡和右邊的解碼網絡實現的,其中,路徑向量x表示被編碼成向量的調用軌跡。編碼網絡的作用是將調用軌跡的模式信息編碼進神經網絡中,而解碼網絡的作用是用編碼進神經網絡中的信息重建輸入的調用軌跡模式。這樣通過編碼網絡和解碼網絡的不斷迭代學習,重建出的調用軌跡模式的精度不斷提升,最終,TraceAnomaly通過這種非監督的方式學習到了調用軌跡中的模式。

      該深度學習算法模型分為離線訓練階段和在線檢測兩個階段如下圖所示。離線訓練階段,服務的調用軌跡被編碼為服務軌跡向量STV,然后被喂入到深度貝葉斯網絡進行訓練并獲得異常檢測模型,為了適應潛在的服務升級,將定期對模型進行重新訓練。在線檢測階段,新到的調用軌跡先被編碼為服務軌跡向量STV,如果存在不可見的調用路徑則視為異常,如果不存在則使用訓練好的異常檢測模型進行檢測并計算一個異常值,當該異常值小于一定閾值時,則視該調用軌跡為異常,最后使用根因定位算法分析該異常調用軌跡的故障根因。

      基于對抗網絡GAN的異常檢測

      與傳統的分類方法不同,GAN訓練的鑒別器在無監督的方式下學習辨別真偽,使GAN成為異常檢測的一種有吸引力的無監督機器學習技術。此外,GAN框架還產生了一個生成器,它實際上是目標系統的一個不明確模型,能夠從一定的潛在空間輸出正常樣本。靈感來自更新從實時空間映射到某個潛在的空間來提高發電機和鑒頻器的訓練,研究人員最近提議培養潛在的空間可以理解GAN和無監督學習應用它的豐富的特性表征任意的數據分布。通過從潛在空間重構測試樣本識別異常的可能性,應用基于GAN的異常檢測策略來發現圖像的意外標記,以此為啟發,可以利用GAN訓練過的發生器和鑒別器來更好地檢測基于殘差和鑒別損失的異常。

      MAD-GAN 基于生成對抗網絡的時間序列數據多變量異常檢測

      01 文獻來源

      Li, Dan, et al. "Anomaly detection with generative adversarial networks for multivariate time series." arXiv preprint arXiv:1809.04758 (2018).

      Li, Dan, et al. "Multivariate anomaly detection for time series data with generative adversarial networks." arXiv preprint arXiv:1901.04997 (2019).

      02 文獻目標

      Cyber-Physical Systems(CPSs)是為關鍵任務設計的相互連接的物理網絡系統。一些CPSs的例子是水處理和分配工廠、天然氣分配系統、煉油廠、發電廠、電網和自動駕駛汽車。物聯網(IoT)的出現將進一步推動CPSs在各種任務中的擴散,導致許多系統和設備在網絡上自動通信和操作,因此,網絡攻擊是CPSs最關注的潛在威脅之一。

      為了解決現代物聯網絡日益動態和復雜的特性,導致傳感器生成的多變量時間序列復雜難以分析,人們利用監督和非監督機器學習技術,從大數據中開發更智能和自適應的方法,以識別異常或入侵。但是,即使使用機器學習技術,檢測時間序列中的異常仍然具有挑戰性,大多數受監督的技術需要足夠多的可靠正常數據和標記異常類來學習,但在實踐中很少出現這種情況,因為異常通常很少見。另外,現有的無監督方法大多是通過線性投影和變換建立的,但復雜CPSs多變量時間序列隱藏的內在相關性往往存在非線性,目前的大多數技術還只是將當前狀態與預測的正常范圍進行簡單的比較,由于控制范圍不夠靈活,不能有效地識別間接攻擊,無法進行異常檢測。

      03 文獻貢獻

      針對傳感器和執行器網絡化的復雜多進程網絡物理系統,提出了一種基于GAN的無監督異常檢測方法

      用多變量時間序列訓練GAN模型,采用長短期遞歸神經網絡LSTM-RNN捕捉時間依賴性,將一般應用于圖像生成域的GAN適應于時間序列生成

      統一使用高維的正規序列訓練GAN模型辨別真偽,同時從特定的潛在空間重構測試序列

      損失計算的訓練有素的鑒別器和重建之間的剩余損失和實際測試序列,使用兩個訓練有素的鑒別器和生成器,組合在一起來檢測在高維時間序列異常點,并顯示該方法在一個復雜的網絡攻擊安全水處理系統中異常檢測上優于現有方法

      04 總體架構

      為了處理時間序列數據,如下圖所示本文使用LSTM-RNN神經網絡構造GAN的發生器G和鑒別器D。遵循典型的GAN框架,生成器G以來自隨機潛在空間的序列作為其輸入生成偽時間序列,并將生成的序列樣本傳遞給鑒別器D,鑒別器D要將將生成的虛假數據序列與實際正常訓練數據序列區分開來。

      MAD-GAN框架不是獨立處理每個數據流,而是同時考慮整個變量集,以便將變量之間的潛在交互捕獲到模型中。該框架在判別前用滑動窗口將多元時間序列分成子序列,為了根據經驗確定子序列表示的最佳窗口長度,使用不同的窗口大小來捕獲不同分辨率下的系統狀態。與標準的GAN框架一樣,D和G的參數是基于D的輸出來更新的,因此鑒別器D可以被訓練為盡可能敏感地將正確的標簽分配給真實和虛假序列,而生成器將被訓練為盡可能聰明地在經過足夠多輪的迭代后欺騙鑒別器,即誤導D將真實標簽分配給虛假序列。通過能夠生成真實的樣本,生成器G將已經捕獲了訓練序列的隱藏多元分布,并且可以被視為正常狀態下系統的隱式模型。同時,得到的鑒別器D也已經被訓練成能夠以高靈敏度區分虛假數據和真實數據。在MAD-GAN框架中,使用G和D來完成異常檢測任務的步驟分為:

      重構基于從實時空間到GAN潛在空間的映射,利用實時測試樣本和G重構樣本之間的殘差

      鑒別用鑒別器D對時間序列進行分類。如圖所示,測試樣本被映射回潛在空間,以基于重建的測試樣本和實際測試樣本之間的差異來計算相應的重建損失。同時,測試樣本還被饋送到訓練好的鑒別器D,以計算鑒別損失。

      DR值判斷異常使用一種新的鑒別和重建異常分數DR-Score來組合兩種損失,以檢測數據中的潛在異常

      05 實驗源碼

      Anomaly detection with generative adversarial networks for multivariate time series.

      AMultivariate anomaly detection for time series data with generative adversarial networks.

      TadGAN 生成對抗網絡的時間序列異常檢測

      01 文獻來源

      Geiger, Alexander, et al. "TadGAN: Time Series Anomaly Detection Using Generative Adversarial Networks." arXiv preprint arXiv:2009.07769 (2020).

      02 文獻目標

      基于深度學習的方法的一個基本挑戰是,它們出色的數據擬合能力帶來了它們也能擬合異常數據的風險。使用L2目標函數的自動編碼器可以非常精確地擬合和重建數據,從而擬合異常。另一方面,GANs在學習生成器以完全捕捉數據的隱藏分布方面可能是無效的,從而導致錯誤警報。本文將這兩種方法混合在一起,創建了一種更細致的方法。此外,該領域的工作經常強調改進深度學習模型本身。然而,正如我們在本文中所展示的,改進后處理步驟有助于顯著減少誤報的數量。

      03 文獻貢獻

      針對時間序列數據,本文提出了一種新的基于無監督對抗生成神經網絡重構的異常檢測方法,并引入了一個周期一致的GAN架構,用于時間序列到時間序列的映射。

      本文提出了一種新的兩種時間序列相似性度量方法,利用GAN的生成器和判別器來計算每個時間步長時間序列的魯棒異常分數,該方法適用于評估原始序列和重建序列之間的上下文相似性

      本文使用來自3個著名實體 (NASA、Yahoo 和 Numenta ) 的11個時間序列數據集進行了廣泛的評估,證明本文提出的方法優于其他8個基線。

      本文研究人員開發了一個用于時間序列異常檢測的基準系統。該系統是開源的,可以通過其他方法和數據集進行擴展,在撰寫本文時,該基準包括9個異常檢測管道、13個數據集和2個評估機制。

      04 總體架構

      為了捕捉時間序列分布的時間相關性,本文使用LSTM循環神經網絡作為生成器和判別器的基本模型。TadGAN采用循環一致性損失進行訓練,以實現有效的時間序列數據重建。除此之外,還提出了幾種新的方法來計算重建誤差,以及不同的方法來結合重建誤差和臨界輸出來計算異常分數。本文利用對抗性學習方法來獲得兩個映射函數E和G。如下圖所示,將這兩個映射函數均視為生成器,E充當編碼器,將時間序列映射到潛在空間;而G充當解碼器,將潛在空間轉換到重建的時間序列;判別器C區分來自x的真實時間序列和來自G(z)生成的虛假時間序列;而判別器Cz測量映射到潛在空間的有效性。

      文中指出應用標準對抗損失的原始公式存在梯度不穩定和模式崩潰的問題。模式崩潰是指在生成器與判別器的動態博弈之后,生成器其實是更傾向于產生那些已經被發現是“好”的樣本來愚弄判別器,而不愿意產生新的樣本,這導致生成器產生的樣本多樣性不足,無法完美收斂到目標分布。因此,TadGAN的目標包括 Wasserstein loss 和 Cycle consistency loss ,前者是為了使生成的時間序列的分布與目標域的數據分布相匹配;后者是為了防止兩個生成器之間產生矛盾。

      05 實驗源碼

      TadGAN: Time Series Anomaly Detection Using Generative Adversarial Networks.

      基于 GAN 的發電廠多元時間序列數據異常檢測與定位

      01 文獻來源

      Choi, Yeji, et al. "Gan-based anomaly detection and localization of multivariate time series data for power plant." 2020 IEEE International Conference on Big Data and Smart Computing (BigComp). IEEE, 2020.

      02 文獻目標

      如果將對抗訓練方法 (GAN) 直接應用于LSTM-RNN模型,這會導致優化模型的巨大計算復雜性。因為基于 LSTM 的 GAN 需要一個迭代過程,該過程中通過在隨機潛在空間中生成樣本并將測試數據重新映射回潛在空間來更新模型,這就導致了巨大的計算復雜性。為此,本文提出了一種新的基于 GAN 的異常檢測和定位框架,以及一種稱為距離圖像 (Distance Image) 被用于多元時間序列成像的變換方法,使得能夠盡可能早地檢測異常情況發生的某個時間點。

      03 文獻貢獻

      本文提出了一種新的基于對抗生成神經網絡的異常檢測和定位框架,以及一種用于多元時間序列成像的變換方法,稱為距離圖像。生成器可以學習一系列距離圖像到下一個距離圖像的映射,從而不僅可以分析時間序列數據的時間關聯,還可以通過卷積濾波分析多變量之間的相關性。特別地,具有逐點卷積的編碼器確保編碼每個時間序列圖像的時間信息以及每個變量之間的相互關系。在電廠真實數據上的實驗證明了該方法對異常檢測任務的有效性,并證實了該方法得到的異常分值是診斷異常情況的重要指標。

      04 總體架構

      在對多元時間序列圖像進行異常檢測之前,本文使用一種稱為距離圖像的方法用于多元時間序列成像的變換,通過測量每個時間步長的變量之間的相似性來將多變量時間序列數據轉換成圖像,該方法受到距離矩陣概念的啟發,通過合成距離圖像來表征給定持續時間內每對變量之間的相位差。這種變換不僅通過測量每個變量之間的相位差將傳感器之間的相關關系編碼為空間信息,而且捕獲了給定時間段內的時間信息。此外,它對某些點上出現的脈沖噪聲是魯棒的,因為噪聲通過時間軸上的平均處理被沖走了。多元時間序列成像轉換的例子如下圖所示,正常情況下的正常模式有很多種,來自異常狀態的模式不同于正常樣本的模式。

      基于上述距離圖像,本文提出的基于對抗生成神經網絡的異常檢測和定位框架如下圖所示,首先將每個時間步長內的多元時間序列轉換成距離圖像,時間窗口大小為 w,然后將該序列圖像饋送給GANs以生成下一個距離圖像。這個過程中,在生成器的頂部使用了逐點卷積層 (Pointwise Convolution) ,以便從一系列距離圖像中捕獲時間信息,并使用一般的卷積層來提取表示每對變量相關性的空間信息。該框架的目標是訓練一個有效的生成器,能夠根據一個距離圖像序列生成下一個預期的距離圖像,為此,訓練過程中只使用正態數據集進行訓練,學習正態數據分布的潛在向量空間。生成器 G 由編碼器和解碼器結構組成,并使用跳躍連接來提高輸出結果的質量;鑒別器 D 盡可能的區分輸入圖像 (真實) 和重建圖像 (虛假) 。

      最后結合真實距離圖像和估計距離圖像之間的殘差損失和判別特征損失,推導出異常評分函數。為了確定給定時間序列數據對應于正常情況還是異常情況,本文定義了基于兩個損失的異常評分函數,即鑒別器中的重建損失和特征損失。重建損失計算公式如下所示:

      對于在時間步長為 t 的距離圖像 mt ,在 t 時段其異常評分計算公式如下所示,其中 f 是D的最后一層特征向量,lambda是調節特征丟失對總體異常評分函數的影響的加權參數。

      由于模型只學習訓練數據集中正態數據的分布,當測試數據偏離正態數據分布時,重構損失會增加。此外,輸入圖像和生成圖像的特征向量的L2距離計算特征空間中的相異度。因此,這些損失的組合可以實現測量異常的程度。當該異常分數接近0時,意味著測試時間點對應于正常狀態,反之亦然。

      云原生 云日志服務 LTS 日志分析服務 LOG 機器學習 深度學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:《考取HCIA證書看我就夠了》第五篇:[HCIA-IoT]物聯網技術之感知層技術概覽
      下一篇:敏捷與教練相得益彰
      相關文章
      中文字幕乱码亚洲无线三区| 亚洲国产最大av| 亚洲高清毛片一区二区| 亚洲精品不卡视频| 亚洲av无码乱码国产精品fc2| 亚洲中文字幕在线第六区| 亚洲性日韩精品国产一区二区| 深夜国产福利99亚洲视频| 夜色阁亚洲一区二区三区| 亚洲成av人片在线天堂无| 亚洲AV香蕉一区区二区三区| 欧洲亚洲国产精华液| 亚洲精品无码不卡在线播放| 亚洲国产精品99久久久久久| 亚洲AV日韩AV无码污污网站| 亚洲成AV人影片在线观看| 大胆亚洲人体视频| 久久久无码精品亚洲日韩软件| 久久精品亚洲乱码伦伦中文| 亚洲一区二区三区自拍公司| 国产V亚洲V天堂A无码| 亚洲国产精品久久久久网站| 亚洲经典在线观看| 色偷偷女男人的天堂亚洲网| 亚洲性无码一区二区三区| 亚洲AV一区二区三区四区| 男人的天堂亚洲一区二区三区| 亚洲av中文无码字幕色不卡| 天天综合亚洲色在线精品| 亚洲免费在线观看| 亚洲午夜无码久久久久| 亚洲成年人在线观看| 亚洲国产视频网站| 亚洲日本成本人观看| 国产成人亚洲精品播放器下载 | xvideos亚洲永久网址| 亚洲伊人久久综合影院| 久久91亚洲人成电影网站| 久久亚洲中文字幕精品有坂深雪 | 亚洲国产a级视频| 亚洲日韩精品无码专区网址|