背景技術:
許多類型的計算系統(tǒng)和應用生成與那個計算系統(tǒng)或應用的操作相關或由其產生的大量數(shù)據。這大量的數(shù)據存儲到收集的位置中,諸如日志文件/記錄,如果需要分析系統(tǒng)或應用的行為或操作,這些日志文件/記錄可以在稍后的時間段被審查。
服務器管理員和應用管理員可以通過學習和分析系統(tǒng)日志記錄的內容來獲益。但是,出于許多原因,從日志文件挖掘知識會是一項非常具有挑戰(zhàn)性的任務。一個挑戰(zhàn)是日志數(shù)據的尺寸可以非常大,從而使得為了具體感興趣的信息項而分析大量記錄效率低下并且困難。如果日志數(shù)據中感興趣的條目在較大的數(shù)據集中相對稀疏(情況常常就是這樣,因為嚴重的問題通常是罕見的),則情況尤其如此。但是,當出現(xiàn)這種問題時,他們往往需要立即采取行動,這強調了能夠在整個大型日志數(shù)據集中高效識別罕見或稀疏的感興趣記錄的重要性。而且,感興趣的趨勢可以隱藏在事件的序列中。發(fā)現(xiàn)事件的這些具體序列的原始證據可以存在于日志文件中,但是將個體信息從大量日志數(shù)據集中組合起來以得出有意義的結論會是一個特別不平凡的任務。
上面提到的問題在大型復雜的生態(tài)系統(tǒng)(諸如復雜的企業(yè)級數(shù)據庫管理系統(tǒng))中變得更加顯著。這種系統(tǒng)可以產生非常大量的存儲在硬件日志、操作系統(tǒng)日志、應用日志、應用服務器日志、數(shù)據庫服務器日志以及監(jiān)視大型生產系統(tǒng)的行為的其它類型日志中的數(shù)據。此外,在云環(huán)境中也會存在類似的情況,其中多個客戶以虛擬化方式共享相同的物理資源。從這種日志文件中挖掘知識可以相當于在干草堆中尋找針頭。
因此,需要一種可用于分析大量數(shù)據(諸如由計算系統(tǒng)和應用生成的日志數(shù)據)的改進方法。
技術實現(xiàn)要素:
本發(fā)明的實施例提供了一種用于以高效的方式分析數(shù)據集的方法,使得可以對數(shù)據有效地執(zhí)行分析。在一些實施例中,執(zhí)行分類操作,以生成相似日志記錄的組。這允許以聚合和信息性的方式對日志記錄進行分類。此外,可以對日志數(shù)據的組執(zhí)行基于組的增量操作,以檢測數(shù)據的不同組之間的差異和相似性。也可以在分組數(shù)據集中識別子序列。各種類型的分析可以應用到分類的數(shù)據。
本發(fā)明的實施例提供使分組處理自動化的功能,其中輸入是消息列表和相似性閾值,并且操作的輸出是組id的列表和組結構。
在一些實施例中執(zhí)行數(shù)據子集化(subsetting),它將日志數(shù)據分解成多個子集進行處理。例如,日志數(shù)據可以基于每個個體日志記錄中的記號的數(shù)量被分成子集。以這種方式,日志記錄的具體子集內的每個日志記錄將被知道具有確切相同數(shù)量的記號,并且因此允許依賴這個事實進行處理的分類算法。在一些實施例中,日志數(shù)據可以彼此獨立地被處理,使得任何記錄都被記號化,而不依賴任何其它日志記錄的記號化的結果。對日志數(shù)據的每個子集執(zhí)行處理。
在一些實施例中,執(zhí)行分類,以將日志數(shù)據分組為具有足夠相似性的日志數(shù)據的分組。這個處理被實現(xiàn),以將日志記錄分類到相同或不同的組中,例如,至少部分地基于相似性值是否滿足指定的閾值水平。在一些實施例中,相似性值與一個或多個記錄的兩個集合之間的重疊程度對應。例如,在記號化的日志數(shù)據的上下文中,相似性值可以涉及依據“記號內容”和“記號位置”的兩個日志記錄之間的重疊程度。
在日志數(shù)據被分類成適當?shù)慕M之后,可以對分組的數(shù)據執(zhí)行數(shù)據后處理。例如,可以執(zhí)行附加的處理,以進一步增強分組,使得當進一步實現(xiàn)或識別出適用的分組標準時可以將最初未分組的日志數(shù)據放到同一組中。然后可以執(zhí)行分析,諸如異常檢測、序列分析和預測。
在一些實施例中,可以并行地處理截然不同的數(shù)據集合,從而允許日志數(shù)據的更高效的并發(fā)處理。在一些實施例中,采用不同的處理實體對數(shù)據集進行記號化,其中第一處理實體對一個或多個記錄的第一集合進行記號化,并且第二處理實體對一個或多個記錄的第二集合進行記號化。在分類的上下文中,可以針對不同的日志數(shù)據集獨立地執(zhí)行基于相似性值對日志數(shù)據進行分組的處理,例如,其中第一處理實體執(zhí)行計算,以分類第一日志記錄,并且第二實體獨立地執(zhí)行計算,以分類第二日志記錄。
根據一些實施例,本發(fā)明涉及一種方法,包括:從處理系統(tǒng)接收多個日志記錄,所述多個日志記錄包括一個或多個第一日志記錄和一個或多個第二日志記錄;將所述一個或多個第一日志記錄與所述一個或多個第二日志記錄進行比較,以確定所述一個或多個第一日志記錄與所述一個或多個第二日志記錄有多相似,所述一個或多個第一日志記錄與所述一個或多個第二日志記錄進行比較是通過將所述一個或多個第一日志記錄獨立地記號化為第一多個記號并將所述一個或多個第二日志記錄獨立地記號化為第二多個記號進行的,其中依照記號內容和位置兩者生成與所述第一多個記號和所述第二多個記號之間的重疊程度對應的相似性值;以及至少部分地基于相似性值是否小于閾值水平而將所述一個或多個第一日志記錄和所述一個或多個第二日志記錄分類到相同或不同的組中。在一些實施例中,所述一個或多個第一日志記錄和所述一個或多個第二日志記錄被分類到一個組中,還包括:存儲用于該組的簽名,該簽名包括:由所述一個或多個第一日志記錄和所述一個或多個第二日志記錄共享的一個或多個重疊部分,以及在所述一個或多個第一日志記錄與所述一個或多個第二日志記錄之間不同的一個或多個可變部分。在一些實施例中,該方法還包括:存儲用于該組的組標識符;存儲用于該組的樣本日志記錄;以及存儲與該組關聯(lián)的日志記錄的計數(shù)、用于該組的組簽名或用于該組的成員信息中的至少一個。在某些實施例中,相似性值被計算為hamming距離的函數(shù)。該方法還可以包括:對所述一個或多個第一日志記錄和所述一個或多個第二日志記錄中的記號的數(shù)量進行計數(shù);以及使用已經為所述一個或多個第一日志記錄和所述一個或多個第二日志記錄計數(shù)的記號的數(shù)量來識別子集,其中所述一個或多個第一日志記錄與給定子集中的所述一個或多個第二日志記錄進行比較。在一些實施例中,將所述一個或多個第一個日志記錄和所述一個或多個第二個日志記錄作為記錄的批量組進行處理。所述一個或多個第一日志記錄和所述一個或多個第二日志記錄可以被分類到一個組中,并且來自處理系統(tǒng)的多個日志記錄被在線處理,這種方法包括:接收個體日志記錄;將該個體日志記錄與組中的樣本日志記錄進行比較,以確定該個體日志記錄與組中的樣本日志記錄之間的重疊程度;如果重疊程度小于閾值水平,則將該個體日志記錄分類到新組中;而如果重疊程度大于閾值水平,則將該個體日志記錄分類到該組中。多組日志記錄可以組合在一起,其中與這多組日志記錄關聯(lián)的簽名的可變部分被折疊,以識別等效的組簽名。多個處理實體可以對所述一個或多個第一日志記錄和所述一個或多個第二日志記錄并行操作。多個處理實體可以對所述一個或多個第一日志記錄和所述一個或多個第二日志記錄并行地操作。所述多個處理實體可以執(zhí)行并行地對所述一個或多個第一和第二記錄進行記號化、并行地對所述一個或多個第一和第二記錄進行分類或者并行地將多個組合并到一起當中的至少一個。該方法還可以包括識別來自處理系統(tǒng)的多個日志記錄中的組的序列。上述的任意組合可以根據本發(fā)明的一些實施例來實現(xiàn)。一些實施例涉及其上存儲有指令序列的計算機可讀介質,所述指令序列在由處理器執(zhí)行時,使得處理器執(zhí)行任意前述組合。一些實施例涉及一種系統(tǒng),包括:處理器和其上存儲有指令序列的存儲器,所述指令序列在由處理器執(zhí)行時,使得處理器執(zhí)行任意前述組合。
在詳細描述、附圖和權利要求中描述本發(fā)明的其它附加目的、特征和優(yōu)點。
附圖說明
下面參考附圖描述各種實施例。應當指出,附圖不是按比例繪制的,并且貫穿整個附圖,具有相似結構或功能的元件由相同的標號表示。還應當指出,附圖僅意在促進對實施例的描述。它們不意在作為本發(fā)明的詳盡描述或作為對本發(fā)明的范圍的限制。
圖1示出了可以在本發(fā)明的一些實施例中被用來實現(xiàn)用于分析和分類數(shù)據集的方法的示例系統(tǒng)。
圖2a示出了用于實現(xiàn)本發(fā)明一些實施例的處理的流程圖。
圖2b示出了根據本發(fā)明一些實施例的用于實現(xiàn)數(shù)據子集化的處理的流程圖。
圖2c示出了根據本發(fā)明一些實施例的用于執(zhí)行這些分類和分組動作的處理的流程圖。
圖2d示出了對日志記錄執(zhí)行在線處理的方法的流程圖。
圖3a-n提供了對日志數(shù)據進行分組的處理的說明性示例。
圖4示出了可以被采取以執(zhí)行數(shù)據后處理的一種可能方法的流程圖。
圖5a-c示出了執(zhí)行數(shù)據后處理的處理。
圖6a示出了可以被采取以使為不同批次生成的不同分組同構(homegenous)的方法的流程圖。
圖6b示出了可以被采取以并行化日志記錄的處理的方法的流程圖。
圖7a示出了可以被采取以識別(分組的)消息的頻繁序列的方法的流程圖。
圖7b示出了消息的示例序列。
圖8示出了其中輸入包括大日志數(shù)據集的場景,該數(shù)據集可以在輸出中顯著減少。
圖9a示出了其中輸入包括大url數(shù)據集的場景,該數(shù)據集可以在輸出中顯著減少。
圖9b示出了對url數(shù)據進行分類的方法的流程圖。
圖10a示出了其中輸入包括大url數(shù)據集的場景,其中輸出包括與輸入對應的自動生成的正則表達式。
圖10b示出了利用自動生成的正則表達式對url數(shù)據進行分類的方法的流程圖。
圖11a示出了對于蹤跡識別出相似但不必相同的異常的場景。
圖11b是生成圖11a中所示的場景的方法的流程圖。
圖12示出了其中輸入包括sql代碼集并且輸出包括已經被分組在一起的sql的經處理版本的應用。
圖13示出了體現(xiàn)本發(fā)明的實施例對it支持目的的應用的系統(tǒng)。
圖14示出了可以利用其實現(xiàn)本發(fā)明的示例計算系統(tǒng)的體系架構。
具體實施方式
如上面所指出的,許多類型的計算系統(tǒng)和應用生成與那個計算系統(tǒng)或應用的操作相關或由其產生的大量數(shù)據。然后這大量的數(shù)據存儲到收集的位置中,諸如日志文件/記錄,如果需要分析系統(tǒng)或應用的行為或操作,這些日志文件/記錄可以在稍后的時間段被審查。
本發(fā)明的實施例提供了一種用于以高效的方式分析數(shù)據集的方法,使得可以對數(shù)據有效地執(zhí)行分析。在一些實施例中,執(zhí)行分類操作,以生成相似日志記錄的組。這允許以聚合和信息性的方式對日志記錄進行分類。此外,可以對日志數(shù)據的組執(zhí)行基于組的增量操作,以檢測數(shù)據的不同組之間的差異和相似性。也可以在分組的數(shù)據集中識別子序列。各種類型的分析可以應用到分類的數(shù)據。
雖然下面的描述可以通過關于“日志”數(shù)據的說明來描述本發(fā)明,但是本發(fā)明的范圍不限于對日志數(shù)據的分析,并且實際上可以應用到廣泛的數(shù)據類型。因此,除非特別聲明,否則本發(fā)明不僅限于其對日志數(shù)據的應用。此外,以下描述也可以可互換地將被處理的數(shù)據稱為“記錄”或“消息”,而不意在將本發(fā)明的范圍限制到針對數(shù)據的任何特定格式。
一般而言,可以對日志數(shù)據執(zhí)行分類操作,其理解是打印在日志文件中的日志消息通常不是任意文本。他們看起來不像電子郵件消息的正文或書中的段落。它們通常是機器生成的并遵循嚴格的格式。許多、大多數(shù)或所有這種消息通常包括框架/恒定部分和可變部分。以下是幾個示例:
[m01]created1resourcesforpoolsysman-opss-ds,outofwhich1areavailableand0areunavailable
[m02]created1resourcesforpoolemgc-sysman-pool,outofwhich1areavailableand0areunavailable
[m03]connectionforpoolemgc-sysman-poolhasbeenclosed
[m04]33%ofthetotalmemoryintheserverisfree
[m05]connectionforpoolmds-owsmhasbeenclosed
[m06]deletinglogfile:diagnostic-144.log,size:10467701bytes
[m07]connectionforpoolmds-sysmanmdshasbeenclosed
[m08]deletinglogfile:diagnostic-201.log,size:2154623bytes
[m09]created1resourcesforpoolmds-owsm,outofwhich1areavailableand0areunavailable
[m10]45%ofthetotalmemoryintheserverisfree
盡管它們有差異,但是有可能將先前示例中的消息分成四個組:
[g1]created1resourcesforpool...outofwhich1areavailableand0areunavailable
[g2]connectionforpool...hasbeenclosed
[g3]...ofthetotalmemoryintheserverisfree
[g4]deletinglogfile:...size:...bytes
m01、m02和m09直觀地屬于組g1。這些消息的恒定/構架部分保持原樣,可變部分已被“...”代替。類似地,消息m03、m05和m07屬于g2,m04和m10屬于g3,而m06和m08屬于g4。
本發(fā)明的實施例提供了使上面提到的分組處理自動化的功能。輸入是消息的列表和相似性閾值(即,影響算法的靈敏度的實參)。在一些實施例中,操作(下文中稱為“分類”操作)的輸出是組id的列表和組結構。在上面的示例中,在一些實施例中的輸出將如下所示:
組id:g1、g1、g2、g3、g2、g4、g2、g4、g1、g3
組(組id,簽名,樣本,計數(shù)):
<g1,“created1resourcesforpool...outofwhich1areavailableand0areunavailable”,“created1resourcesforpoolsysman-opss-ds,outofwhich1areavailableand0areunavailable”,3>,
<g2,“connectionforpool...hasbeenclosed”,“connectionforpoolemgc-sysman-poolhasbeenclosed”,3>,
<g3,“...ofthetotalmemoryintheserverisfree”,“33%ofthetotalmemoryintheserverisfree”,2>,
<g4,“deletinglogfile:...size:...bytes”,“deletinglogfile:emgc_oms1-diagnostic-144.log,size:10467701bytes”,2>
圖1示出了可以在本發(fā)明一些實施例中被采取以實現(xiàn)用于分析和分類數(shù)據集的方法的示例系統(tǒng)100。系統(tǒng)100包括位于一個或多個用戶站的一個或多個用戶,這些用戶使用系統(tǒng)100操作日志分析系統(tǒng)104并與其進行交互。用戶站包括任何類型的可被用于操作系統(tǒng)100中的日志分析系統(tǒng)104或與其接口的計算站。這種用戶站的示例包括例如工作站、個人計算機、移動設備或遠程計算終端。用戶站包括用于向位于用戶站的用戶顯示用戶界面的顯示設備,諸如顯示器監(jiān)視器。用戶站還包括讓用戶對系統(tǒng)100的活動提供操作控制的一個或多個輸入設備,諸如鼠標或鍵盤,以在圖形用戶界面中操縱定點對象,以生成用戶輸入。
日志分析系統(tǒng)104包括位于用戶站的用戶可訪問的功能,例如,其中日志分析系統(tǒng)104被實現(xiàn)為引擎或模塊的集合,以執(zhí)行分組或分析。分組引擎108執(zhí)行分類操作,以對原始日志數(shù)據112進行分組。這種分組允許系統(tǒng)執(zhí)行例如日志數(shù)據的去重復。分析引擎109可以被用于分析分組的日志數(shù)據。這種分析的示例包括異常檢測、序列分析和預測。用戶界面機構106生成ui,以顯示分類和分析結果,并允許用戶與日志分析系統(tǒng)進行交互。
由日志分析系統(tǒng)104處理的原始日志數(shù)據112可以源自任何日志產生源位置。例如,原始日志數(shù)據112可以源自數(shù)據庫管理系統(tǒng)(dbms)、數(shù)據庫應用(dbapp)、中間件或任何其它日志產生應用或系統(tǒng)。
日志分析系統(tǒng)104可以從位于用戶站的用戶接收操作該系統(tǒng)的指令或工作請求。例如,日志分析系統(tǒng)104可以從位于用戶站的用戶接收分析計算機可讀存儲設備110中的原始日志數(shù)據112的請求。計算機可讀存儲設備110包括允許對位于計算機可讀存儲設備110的數(shù)據的就緒訪問的硬件和軟件的任意組合。例如,計算機可讀存儲設備110可以被實現(xiàn)為由操作系統(tǒng)操作地管理的計算機存儲器。計算機可讀存儲設備110中的數(shù)據也可以被實現(xiàn)為數(shù)據庫對象、云對象和/或文件系統(tǒng)中的文件。
圖2a示出了用于實現(xiàn)本發(fā)明一些實施例的處理的流程圖。在202,接收日志數(shù)據進行處理。日志數(shù)據可以源自任何日志產生源位置,諸如數(shù)據庫管理系統(tǒng)、數(shù)據庫應用、中間件、硬件日志、操作系統(tǒng)日志、應用日志、應用服務器日志、數(shù)據庫服務器日志以及監(jiān)視系統(tǒng)或應用的行為的任何其它類型的日志。
在204,執(zhí)行數(shù)據子集化。這個動作將日志數(shù)據分解成多個子集進行處理。子集化數(shù)據的一個原因是為了優(yōu)化用于對日志數(shù)據進行分類的處理。例如,日志數(shù)據可以基于每個個體日志記錄中的記號的數(shù)量被分成子集。以這種方式,日志記錄的具體子集內的每個日志記錄將被知道具有確切相同數(shù)量的記號,并且因此允許依賴這個事實進行處理的分類算法。
在一些實施例中,日志數(shù)據可以彼此獨立地被處理,使得任何記錄都被記號化,而不依賴任何其它日志記錄的記號化的結果。例如,可以分開審查每個日志數(shù)據,以識別該記錄中的記號的數(shù)量,而不需要知道記號化的結果和用于其它日志記錄的記號計數(shù)。以這種方式,每個日志數(shù)據可以基于該具體日志數(shù)據中的記號的數(shù)量獨立地被放到不同的“桶”中,其中每個桶與記號的具體數(shù)量關聯(lián)。
雖然本所示示例示出了基于日志記錄中記號的數(shù)量的子集化,但是也可以使用其它類型的子集化,例如,至少部分地基于產生記錄的具體應用或服務器、記錄的時間戳等等。當然,本領域技術人員還將認識到,本文公開的創(chuàng)造性概念不依賴數(shù)據子集化,并且實際上可以在各種實施例中執(zhí)行,甚至不將日志數(shù)據分成不同的子集。
對于日志數(shù)據的每個子集,在206執(zhí)行處理。特別地,在208,執(zhí)行分類,以將日志數(shù)據分組成具有足夠相似性的日志數(shù)據的分組。實現(xiàn)這個過程,以將日志記錄分類到相同或不同的組中,例如,至少部分地基于“相似性值”是否滿足指定的閾值水平。在一些實施例中,相似性值與一個或多個記錄的兩個集合之間的重疊程度對應。例如,在記號化的日志數(shù)據的上下文中,相似性值可以涉及依據“記號內容”和“記號位置”的兩個日志記錄之間的重疊程度。記號內容涉及各個記號的內容和/或多個記號的組合。記號位置涉及日志數(shù)據中特定記號的相對位置、存在和/或不存在。一般而言,當日志數(shù)據的兩個集合對于記號內容、記號位置和/或記號內容和定位的組合具有較高水平的對應關系時,相似性值較高,而當日志數(shù)據的兩個集合之間對于這些項存在較小的對應關系時,相似性值較低。
在日志數(shù)據被分類到適當?shù)慕M中之后,然后可以在210對分組的數(shù)據執(zhí)行數(shù)據后處理。例如,可以執(zhí)行附加的處理,以進一步增強分組,使得當進一步實現(xiàn)或識別出適用的分組標準時可以將最初未分組的日志數(shù)據放到同一組中。可以在分組上執(zhí)行任何合適類型的增強。例如,可以通過比較消息的子部分、語義地給數(shù)據加標簽以理解蹤跡文件的結構和/或相鄰可變部分的折疊來實現(xiàn)增強(如下面更詳細描述的)。
然后在212可以執(zhí)行分析。這種分析的示例包括異常檢測、序列分析和預測。作為可用于這種方法的異常檢測類型的示例,考慮總是在數(shù)據的一致時間以一致的頻率出現(xiàn)的某種類型的日志記錄。如果這種類型的日志記錄突然不以相同的頻率或時間出現(xiàn)在日志數(shù)據中,則可以向管理員通知作為潛在問題的癥狀的可能值得注意的異常。相反的情況也可以構成可采取動作的異常,其中某種類型的日志記錄完全不或者只很罕見地出現(xiàn)在日志數(shù)據中,但是突然和/或以大得多的頻率和/或在一天中的錯誤時間出現(xiàn)在日志數(shù)據。這可以指向指示存在系統(tǒng)問題或安全漏洞的異常。序列分析可以被用于檢查日志數(shù)據中預期和/或非預期的集合和記錄序列的存在。當在日志數(shù)據中檢測到某些日志類型、組或序列時,預測可以被用于預測可能的狀態(tài)和情況。這可以被用于例如在檢測到在過去已經與問題相關的已知序列時預測問題情況的存在。通過預測這些情況,管理員甚至可以在它們影響系統(tǒng)的操作或將它們表現(xiàn)為最終用戶可見的癥狀或投訴之前搶先解決可能出現(xiàn)的問題。通過使用本文描述的分組方法,可以更高效地和/或有效地執(zhí)行這些分析,因為(a)實現(xiàn)了減少復雜度的數(shù)據去重復,和(b)將文本數(shù)據(日志記錄)變換為整數(shù)(組id),這更容易以更高效的方式處理。
上述處理的一個優(yōu)點是可以并行地處理截然不同的數(shù)據集合,從而允許日志數(shù)據的更高效的并發(fā)處理。例如,關于子集化處理,這產生有可能被并行處理的截然不同的數(shù)據集,從而允許日志數(shù)據的更高效的并行處理。在一些實施例中,采用不同的處理實體對數(shù)據集進行記號化,其中第一處理實體對一個或多個記錄的第一集合進行記號化,并且第二處理實體對一個或多個記錄的第二集合進行記號化。在分類的上下文中,可以針對不同的日志數(shù)據集獨立地執(zhí)行基于相似性值對日志數(shù)據進行分組的處理,例如,其中第一處理實體執(zhí)行計算,以分類第一日志記錄,并且第二實體獨立地執(zhí)行計算,以分類第二日志記錄。并行分類活動可以最終將日志記錄分組到相同或不同的組中。如本文所使用的,術語“處理實體”包括可以被用于處理計算系統(tǒng)中的工作的任何類型的實體,諸如但不限于進程、線程、任務、服務器、節(jié)點或服務器進程。
如上面所指出的,在本發(fā)明的一些實施例中,對日志數(shù)據執(zhí)行數(shù)據子集化。這種方法將所有輸入消息拆分成記號或詞(本文統(tǒng)稱為“記號”)的向量。例如,消息m01
[m01]created1resourcesforpoolsysman-opss-ds,outofwhich1areavailableand0areunavailable.
將被拆分成<“created”,“1”,“resources”,“for”,“pool”,“sysman-opss-ds”,“out”,“of”,“which”,“1”,“are”,“available”,“and”,“0”,”are“,“unavailable”>。
然后,向量按長度(或記號計數(shù))進行子集化。理由是在一些情況下可以假設只有具有相同數(shù)量的記號的消息可以屬于相同的組。
圖2b示出了根據本發(fā)明一些實施例的用于實現(xiàn)數(shù)據子集化的處理的流程圖,其中給定日志記錄中的記號的數(shù)量被用于對數(shù)據進行子集化。在處理的220,識別要處理的日志記錄。在一些實施例中,輸入包括來自給定日志文件的日志記錄的陣列。
在222,日志記錄被記號化。在一些實施例中,記號化處理生成與日志記錄中的記號等效的記號。任何合適的分隔符都可以被用于記號化日志記錄。對于正常的文本數(shù)據,分隔符可以是例如空格或換行。其它類型的數(shù)據可以使用不同的分隔符。例如,基于url的數(shù)據可以使用諸如“/”或“\”之類的符號作為分隔符。在某些記號化器中,可能決定不拆分引號內的記號,或者折疊多個空格并將其用作單個分隔符。應當指出,本文公開的創(chuàng)造性概念不依賴于在記號化器中拆分日志記錄的任何具體方法。當然,分組結果的質量可以在某種程度上依賴于記號化器(例如,urlvs日志記錄vs堆棧蹤跡)。
在224,對日志記錄中的記號的數(shù)量執(zhí)行計數(shù)。在226,然后根據記錄中記號的數(shù)量將該日志記錄放入適當?shù)淖蛹小?/p>
在230檢查是否有更多記錄要處理。如果有,則處理返回到220,以選擇要處理的另一個記錄。如果沒有,則處理在232結束。
對于給定的子集s,在一些實施例中該方法通過找到尚未分類的第一消息向量v并創(chuàng)建新組g來執(zhí)行分類/分組。
然后在v與s中的每個尚未分類的向量之間計算相似性值??梢圆扇∪魏魏线m的方法來實現(xiàn)與向量之間的重疊程度的測量對應、與向量之間的差異和/或相似水平對應的相似性值。例如,一些實施例使用“hamming距離”作為相似性值,其中兩個串之間的hamming距離與對應符號不同的位置數(shù)對應。因此,hamming距離測量將一個串改為另一個串所需的替換次數(shù),并且對于二進制串a和b,可以通過確定對a和b執(zhí)行xor操作的數(shù)量/百分比來計算hamming距離。在一些實施例中,采用基于記號的hamming方法來計算hamming距離。但是,應當指出,也可以使用其它類型的相似性值代替hamming距離。例如,可以使用不依賴于記號排序或者對向量/串中的某些位置給予比其它位置更大權重(例如,在串的開始匹配/不匹配的記號被給予比串末尾處的記號更大的權重)的相似性值。
其相似性值/hamming距離足夠小(根據作為輸入被傳遞的相似性閾值)的所有消息被分類到相同的組g中。在這個時候,為該組生成簽名,簽名可以是描述g中的所有消息的正則表達式的形式,并且對g中的消息的數(shù)量進行計數(shù)。如果在s中存在任何更多尚未分類的向量,則執(zhí)行這些動作。當它們全部被處理后,另一個子集s'被選中,并執(zhí)行相同的動作。當所有子集都被處理后,返回分類結果。
圖2c示出了根據本發(fā)明一些實施例的用于執(zhí)行這些分類和分組動作的處理的流程圖。在240,識別子集中的日志記錄進行處理。在242,為該日志記錄創(chuàng)建新的組。對于這個新組g,將對應的消息設置為其樣本消息。
對組中每個尚未分類的記錄,執(zhí)行244的處理動作。在246,在組中的樣本日志記錄與子集中的每個尚未分類的向量之間計算相似性值。如上面所指出的,采用基于記號的hamming方法來計算相似性值。在248,確定相似性值是否表示滿足最小相似性閾值的相似性測量。可以采取任何適當?shù)姆椒▽蓚€日志記錄之間的hamming距離變換成表示這兩個日志記錄的相似性測量的百分比。這種公式的示例可以是100*(n-h)/n,其中n表示每個日志記錄中的記號的數(shù)量,h表示計算出的hamming距離。例如,可以為該處理配置60%相似性的最小閾值。如果hamming距離計算指示59%的相似性百分比,則該記錄太不相似,以至于不能被放在同一個組中(252)。另一方面,如果hamming距離計算指示61%的相似性百分比,則記錄足夠相似,可以放在同一個組中(250)。
在對子集中的每個記錄都采取這些動作之后,在254進一步確定在子集中是否存在任何尚未分類的記錄。如果存在,則處理返回到240,以選擇另一個記錄來創(chuàng)建新的組并重復上面的動作,以將記錄分類到該組中(如果適當?shù)脑?。如果不存在,則選擇下一個子集用于在256處理。
圖3a-n提供了對日志數(shù)據進行分組的處理的說明性示例。圖3a示出了原始日志數(shù)據的示例集合300。日志數(shù)據的這個集合300包括日志記錄302a-f。
如圖3b中所示,可以對日志數(shù)據的集合300執(zhí)行數(shù)據子集化。特別地,每個日志記錄302a-f被記號化,以識別記錄中的記號的數(shù)量。在這里,具有五個記號的每個日志記錄可以被放到子集304a中。這個子集包括日志記錄302c和302d。具有四個記號的每個日志記錄可以被放到子集304b中。該子集包括日志記錄302a、302b、302e和302f。
然后,處理通過對具有4個記號的記錄(包括日志記錄302a、302b、302e和302f)的子集304b進行分類來繼續(xù)進行。如圖3c中所示,選擇第一日志記錄302a,以啟動新的組(組id為1)。該日志記錄的內容被設置為這個新組的樣本。
在這個時候,審查每個尚未分類的日志記錄,以確定它們是否應當被分類到這個組1。圖3d示出了對日志記錄302b的分析。為這個日志記錄302b生成hamming距離,以查看它是否距離用于組1的樣本的內容足夠近。在這種情況下,當執(zhí)行基于記號的hamming時,可以看出,兩個日志記錄不足夠相似,使得這兩個記錄中沒有一個記號在任何位置匹配。因此,日志記錄302b將不被分類到組1。
圖3e示出了對日志記錄302e的分析。為這個日志記錄302e生成hamming距離,以查看它是否距離用于組1的樣本的內容足夠近。在這里,可以看出,兩個日志記錄非常相似,記錄的靜態(tài)部分對于第一個記號“server”、第三個記號“is”和第四個記號“down”完全相同。只有第二個記號在兩個記錄之間不同,樣本記錄具有“foo”作為第二個記號,而被分析的記錄302e具有“f002”作為第二個記號。如果系統(tǒng)使用60%的最小相似性閾值,則由于相似性百分比是75%(四個記號中的三個匹配),因此日志記錄302e將被分類到組1。
圖3f示出了對日志記錄302f的分析。為這個日志記錄302f生成hamming距離,以查看它是否距離組1的樣本的內容足夠近。在這種情況下,可以看出,兩個日志記錄不足夠相似,使得這兩個記錄中沒有一個記號在任何位置匹配。因此,日志記錄302f將不被分類到組1。
在這個時候,已經得出結論,記錄302a和302e都應當是組1的一部分。圖3g示出了表示組1的數(shù)據對象的內容,這兩個記錄都被分類到這個組。用于這個組的樣本仍然是用于這個組的第一個記錄302a的內容。此外,已經建立了簽名,簽名識別用于該組的記號的靜態(tài)部分,連同用符號“...”表示的可變部分。這創(chuàng)建了表示組的所有成員的一種正則表達式。此外,對組中的記錄的數(shù)量進行計數(shù)(表示記錄302a和302e的計數(shù)2)。雖然沒有在圖中示出,但是為該組維護的信息還將包括屬于它的成員的身份。在這個示例中,組1的成員是302a和302e。
現(xiàn)在子集304b中仍然存在至少一個尚未分類的記錄。如圖3h中所示,選擇日志記錄302b,以啟動新的組(組id為2)。該日志記錄的內容被設置為這個新組的樣本。
在這個時候,比較其余的未分類的日志記錄中的每一個,以確定它們是否應當分類到這個組2。圖3i示出了對日志記錄302f的分析。為這個日志記錄302f生成hamming距離,以查看它是否距離組2的樣本的內容足夠近。在這里,可以看出,兩個日志記錄非常相似,記錄的靜態(tài)部分對于第一個記號“network”、第二個記號“failure”和第三個記號“at”完全相同。只有第四個記號在兩個記錄之間不同,樣本記錄具有“15:04”作為第四個記號,而被分析的記錄302f具有“21:00”作為第四個記號。如果系統(tǒng)使用60%的最小相似性閾值,則由于相似性百分比是75%(四個記號中的三個匹配),因此日志記錄302f將被分類到組2。
到這個時候,已經得出結論,記錄302b和302f都應當是組2的一部分。圖3j示出了表示組2的數(shù)據對象的內容,這兩個記錄都被分類到這個組。用于這個組的樣本仍然是用于這個組的第一個記錄302b的內容。此外,已經建立了簽名,簽名識別用于該組的記號的靜態(tài)部分,連同用符號“…”表示的可變部分。這創(chuàng)建了表示組的所有成員的一種正則表達式。此外,對組中的記錄的數(shù)量進行計數(shù)(表示記錄302b和302f的計數(shù)2)。為該組維護的信息還將包括屬于它的成員的列表。在這個示例中,組2的成員是302b和302f。
由于子集304b中的所有記錄現(xiàn)在都已被分類,因此將選擇另一個子集進行處理。如圖3k中所示,現(xiàn)在將選擇子集304a進行處理。選擇日志記錄302c,以啟動新的組(組id為3)。該日志記錄的內容被設置為這個新組的樣本。
現(xiàn)在比較其余的尚未分類的日志記錄中的每一個,以確定它們是否應當分類到這個組3。圖3l示出了對日志記錄302d的分析。為這個日志記錄302d生成hamming距離,以查看它距離組3的樣本的內容是否足夠近。在這里,可以看出,兩個日志記錄非常相似,記錄的靜態(tài)部分對于第一個記號“server”、第四個記號“is”、第五個記號“down”完全相同。只有第二和第三個記號不同。如果系統(tǒng)使用60%的最小相似性閾值,則由于相似性百分比恰好為60%(五個記號中的三個匹配),因此日志記錄302d將被分類到組3。
現(xiàn)在已經得出結論,記錄302c和302d都應當是組3的一部分。圖3m示出了表示組3的數(shù)據對象的內容,這兩個記錄都被分類到這個組。用于這個組的樣本仍然是用于這個組的第一個記錄302c的內容。此外,已經建立了簽名,簽名識別用于該組的記號的靜態(tài)部分,連同用符號“…”表示的可變部分。這創(chuàng)建了表示組的所有成員的一種正則表達式。此外,對組中的記錄的數(shù)量進行計數(shù)(表示記錄302c和302d的計數(shù)2)。為該組維護的信息還將包括屬于它的成員的身份。在這個示例中,組3的成員是302c和302d。
圖3n示出了為日志記錄確定的最終組。明顯的是,這種方法提供了極其高效和快速的操作,因為它對簡單且直接的向量化的操作進行操作。此外,這種方法沿著許多不同類型的分區(qū)邊界(例如,子集邊界或分類操作邊界)可并行化。
在正常情況下,這種方法可以實現(xiàn)相當可觀的信息減少。文本消息可以被變換成組id(存儲為整數(shù))。截然不同的消息的數(shù)量通常比所發(fā)現(xiàn)的消息組的數(shù)量小幾個數(shù)量級。而且,將文本變換成數(shù)值允許開發(fā)進一步的用于異常檢測、序列分析、預測等的算法。這種算法對數(shù)字比對文本數(shù)據更快地操作。
本發(fā)明的實施例可以應用于應對在線和離線處理。對于離線處理,消息的語料庫被收集在一起,然后作為記錄的整個組以批量的形式進行處理。例如,可以應用上述處理來應對針對收集的記錄語料庫的離線處理。
圖2d示出了可以被采取以實現(xiàn)消息的在線處理的方法的流程圖。這種情況可以在例如分析系統(tǒng)被實現(xiàn)以應對傳入的消息流時發(fā)生,因此每個記錄/消息不間斷地被個體地處理。該過程在262開始,其中接收要處理的個體記錄。如前面所指出的,日志數(shù)據可以源自任何日志產生源位置,諸如數(shù)據庫管理系統(tǒng)、數(shù)據庫應用、中間件、硬件日志、操作系統(tǒng)日志、應用日志、應用服務器日志、數(shù)據庫服務器日志以及監(jiān)視系統(tǒng)或應用的行為的任何其它類型的日志。
對于這種類型的在線處理,可能已經為先前處理過的消息設置了一個或多個組,其中執(zhí)行處理以檢查新消息是否屬于先前建立的組。因此,在264,為這種類型的檢查最初選擇現(xiàn)有組中的一個。在266,計算新消息與用于現(xiàn)有組的樣本消息之間的相似性值。如前面所指出的,可以使用任何合適的相似性值。在一些實施例中,計算新消息與用于組的樣本消息之間的hamming距離。
在268確定相似性值是否滿足指定的匹配閾值。如果滿足,則在270,新消息被歸類到現(xiàn)有的組中。如果不滿足,則在272就是否有任何更多的現(xiàn)有組要處理做出另一個確定。如果有,則處理循環(huán)回到264,以選擇該現(xiàn)有組并重復上面的步驟。
如果沒有找到與現(xiàn)有組的匹配并且沒有更多的組要處理,則在274,為新消息創(chuàng)建新組。該新組將包括該新消息作為消息樣本。
在線處理方法的潛在問題是這種逐個對消息進行處理的類型可能消耗過多的不間斷系統(tǒng)資源。另一方面,離線處理可能在消息的生成與對分類的消息執(zhí)行分析的點之間招致太多的延遲。
因此,可以采取與在線和離線方法兩者的各方面一起操作的混合方法。利用混合方法,單個消息不會逐個進行處理;也不會將消息的整體一起聚集成一個極其大的組進行批量處理。相反,可以收集傳入的消息,直到閾值數(shù)量的消息(例如,大約一百個消息)被聚集在一起,然后作為組來處理。以這種方式,系統(tǒng)更高效地處理消息,因為它們作為組而不是逐個處理,同時,給定要處理的消息的組的相對較小的尺寸,仍然減少了延遲。
在替代實施例中,不是收集閾值數(shù)量的消息,而是可以建立閾值時間段,用于收集要作為組被處理的消息。
無論是執(zhí)行在線、離線還是混合處理,都可以附加地對分組的數(shù)據執(zhí)行數(shù)據后處理,以進一步增強分組結果。為了解釋為什么這會是期望的,考慮圖3n中所示的組??梢钥闯?,用于組1的樣本日志消息(“serverfooisdown”)與用于組3的樣本日志消息(“servereastcoastisdown”)非常相似。在這種情況下,這兩個組之間的唯一區(qū)別是組3的消息包括2記號的服務器名稱,而組1的消息包括1記號的服務器名稱。照此,將用于這兩個組的消息包括在相同的整體組中是合理的。但是,基于消息中記號的數(shù)量執(zhí)行數(shù)據子集化的算法將這些消息放到不同的子集中(并因此放到不同的組中)導致圖3n中所示的組。
圖4示出了可以被采取以執(zhí)行數(shù)據后處理來解決這種情況的一種可能方法的流程圖。在402,處理通過接收用于不同組的簽名開始。簽名包括靜態(tài)記號部分以及零個或更多個可變記號部分。
接下來,在404,可變記號部分被折疊。折疊可變記號部分的一種可能方法是識別所有相鄰的可變部分,然后將相鄰的可變部分折疊成單個可變部分。
其后,在406,將折疊后的簽名彼此進行比較。如果任何折疊后的簽名匹配,則在408,匹配的簽名的消息可以被合并在一起成為單個組。
圖5a-c示出了這個處理。圖5a再現(xiàn)了先前識別出的組1和組3。在這里,組1與簽名“server...isdown”對應,組3與簽名“server......isdown”對應。
如圖5b中所示,下一個動作是折疊這些簽名中的每一個。如前面所指出的,組1與簽名“server...isdown”對應,該簽名包括作為靜態(tài)記號的第一個記號“server”、作為靜態(tài)記號的第三個記號“is”和作為靜態(tài)記號的第四個記號“down”。符號“...”表示在第二個記號位置的單個可變記號。由于只有單個可變記號,因此在這個簽名中確實沒有要折疊的東西。其結果是,簽名的折疊版本502與簽名的原始版本確切相同。
組3與簽名“server......isdown”對應,該簽名包括作為靜態(tài)記號的第一個記號“server”、作為靜態(tài)記號的第四個記號“is”和作為靜態(tài)記號的第五個記號“down”。但是,表示可變記號的符號“...”在這個簽名中出現(xiàn)兩次(在第二個記號位置和第三個記號位置)。
在這種情況下,由于在相鄰的記號位置中存在多個可變部分,因此用于組3的簽名確實可以被折疊。因此,可以通過將兩個可變記號部分組合成單個可變記號部分來折疊這個簽名。這種方法將原始簽名:“server......isdown”轉換成折疊簽名504:“server...isdown”。
如圖5c中所示,現(xiàn)在可以在用于組1的折疊簽名502和用于組3的折疊簽名504之間執(zhí)行比較。在這里,因為用于這兩個組的折疊簽名確切地匹配,所以與這些匹配的簽名關聯(lián)的消息可以被合并在一起成為單個組。
對日志數(shù)據進行分組的上述操作可以對不同批次的日志記錄執(zhí)行。例如,不同批次的組可能已經在不同的時間點生成。能夠比較來自不同批次的組以確定可能在不同批次之間改變的組內容的任何變化將是有意義的。
僅作為一個示例,假設管理員試圖追蹤某種類型的錯誤消息隨時間推移的發(fā)生。在這種情況下,這可以通過為每個時間段識別與錯誤消息關聯(lián)的組、然后為每個時間段檢查該組的計數(shù)來實現(xiàn)。
問題在于,由于分組處理發(fā)生在不同的時間段內,而消息本身可能已經被適當?shù)胤纸M在一起,因此指派給組的具體組編號可以在不同時間段之間變化。如果組編號以非確定性的方式指派給組,則尤其如此。因此,確定在第一時間段內建立的組是否與在第二時間段內建立的另一個組匹配可能是一個重要的練習(exercise)。
應當指出,這個問題可以對對不同批次的日志消息執(zhí)行分組的任何基礎發(fā)生。這些批次可以基于某個時間約束、基于目標id(例如,基于具體的服務器名稱)或者可用的任何其它過濾器來生成。
圖6a示出了可以被采取以使為不同批次生成的不同組集合同構并且比較計數(shù)如何從一個批次到下一個批次變化的方法的流程圖。
在602,對不同批次中的不同組集合執(zhí)行比較。在604,然后識別不同批次之間匹配的組。這些動作可以例如通過使用用于每個組的樣本文本來執(zhí)行。利用樣本,于是可以使用先前描述的計算相似性值/hamming距離的處理來檢查用于不同批次中的組的每個樣本之間的相似性/差異的閾值水平。滿足最小閾值相似性閾值的任何組將被分類為屬于同一個組。實際上,為了使不同批次的組同構,這個操作調用上述分類功能并將所有組樣本作為輸入消息傳遞。分組在一起的樣本與應當被合并到新的全局組中的來自不同批次的組對應。新的全局組的計數(shù)僅僅是已經合并的原始組合中的各個計數(shù)的總和。
在606,然后可以對不同批次中的組進行規(guī)格化,以記錄它們與批次之間的共同組的關聯(lián)。保存這種規(guī)格化的一種途徑是利用用于屬于同一組的記錄的公共標識符來給每個記錄加標簽。此外,可以將共同的樣本指派給應當彼此關聯(lián)的所有組。
其后,在608,為用戶執(zhí)行并生成整體處理分類(下文中稱為分類增量)。例如,批次可以根據時間或其它因素進行排序。全局計數(shù)的比較可以被用作異常檢測的形式,因為它可以指示系統(tǒng)行為的變化。
當消息的語料庫極其大時,這種方法對于并行化記錄的處理也是有用的。在這種情況下,大的消息組可以被分解成小得多的記錄子集進行處理。然后,可以在將結果合并到一起成為最終的組集合之前并行地處理每個子集。
圖6b示出了執(zhí)行這種類型的并行化的方法的流程圖。在612,記錄集被劃分成多個記錄子集。在614,每個子集由不同的處理實體單獨處理,以對記錄進行分組。這種處理實體可以包括例如并行進程、線程、任務、節(jié)點、處理器和/或能夠執(zhí)行工作的任何其它類型的實體。
然后可以將為不同子集識別出的組放在在一起。在616,對不同子集中的不同組集合進行比較。這可以例如通過為子集內的每個組的樣本文本計算相似性值來執(zhí)行??梢允褂孟惹懊枋龅挠嬎阆嗨菩灾?hamming距離的處理來檢查用于不同子集中的組的每個樣本之間的相似性/差異的閾值水平。
在618,然后識別不同子集之間匹配的組。滿足最小閾值相似性閾值的任何組將被分類為屬于相同的整體組。
在620,在閾值相似性水平內匹配的子集內的每個組將被合并到一起成為全局組。新的全局組的計數(shù)僅僅是已經合并的原始組中的各個計數(shù)的總和。
本實施例還提供了可視化處理結果的改進方法。決定要聚焦消息的哪些組以及如何可視化結果會是有挑戰(zhàn)性的。在一些實施例中,改進的可視化可以通過按照連續(xù)批次之間的絕對差異的最大值并通過顯示最上面n個結果對組進行排序(sort)。然后可以使用任何合適的方法來顯示結果,例如,通過使用斜率圖或熱圖可視化結果。
到目前為止討論的先前的操作提供了關于各個消息組的信息。本發(fā)明的實施例還可以被擴展為識別(分組的)消息的頻繁序列(在本文中被稱為“findsubsequences”)。可以被用于實現(xiàn)這個操作的示例函數(shù)原型如下:
findsubsequences(sequence,elements,before,after,top,min.freq)
“sequence”形參是表示由上述分類操作返回的組id的序列的輸入向量?!癳lements”形參表示感興趣的組id的輸入向量?!癰efore”和“after”形參分別表示相對于要分析的給定元素在之前和之后的組id的數(shù)量,以便發(fā)現(xiàn)頻繁的子序列?!皌op”形參定義要在結果中示出的最頻繁的子序列的數(shù)量?!癿in.freq”形參為這些子序列必須具有的最小頻率設置過濾器。
圖7a示出了可以被采取以實現(xiàn)這個操作的方法的流程圖。在702,為操作接收或定義實參,例如,使用上面定義的形參。
接下來,在704,處理通過數(shù)據的滑動窗口。滑動窗口的尺寸為n,它等于尺寸為before+after+1的窗口?;瑒哟翱谑峭ㄟ^查找原始序列中給定元素的所有位置并將滑動窗口迭代地在這些位置之上對齊來處理的(706)。
對于在滑動窗口時發(fā)現(xiàn)的長度為n的每個子序列,生成散列碼。然后,對每個散列碼的出現(xiàn)次數(shù)進行計數(shù)(708)。最后,按照頻率對散列碼進行排序,其中基于“top”輸入形參選擇top個散列碼??梢詰眠^濾動作來過濾掉不符合最低頻率標準的那些。在這個時候,與散列碼對應的實際子序列可以被檢索并和結果一起返回(710)。
以下是這個操作的示例:
>fmdsubsequences(some.sequence,elements=(1,68),before=2,after=3,top=5,min.freq=2)
這個示例尋找以“1”或“68”標識符為中心的所有子序列,在這些標識符前面有兩個標識符,后面有三個標識符。該請求是針對要返回的按頻率的前五個,最小頻率為二。
圖7b在用戶界面中示出了可以為這個示例操作返回的結果的可能示例,其中部分712示出了與期望的模式匹配并且滿足最低頻率標準的各種子序列s1、s2、s3、s4和s5(例如,按照頻率的前五個子序列)。例如,序列s1在位置3處具有“68”,在該位置之前具有兩個標識符(即,“68”和“69”)以及之后具有三個標識符(即,“69”、“68”和“69”)。類似地,序列s2在位置3處具有“1”,在該位置之前具有兩個標識符(即,“8”和“8”)以及之后具有三個標識符(即,“1”、“1”和“301”)。每個其它識別出的序列類似地在位置3處具有“1”或“68”,在該位置之前具有兩個標識符,以及之后具有三個標識符。部分714可以被用于識別相應子序列的頻率,例如,每個子序列在被分析的數(shù)據中出現(xiàn)多少次。
識別更大序列內的頻繁子序列允許聚焦于某些日志消息(指定的元素)并且找出針對這些消息的上下文。然后可以進一步調查不同日志消息之間的相關性,并探索這些消息/序列中的趨勢和模式。
本發(fā)明的實施例有眾多可能的應用,其提供許多益處和優(yōu)點。一個可能的應用是減少機器數(shù)據和日志數(shù)據的量。圖8示出了其中輸入802包括大日志數(shù)據集的場景,該數(shù)據集可以使用本發(fā)明的實施例在輸出804中顯著減少。這允許顯著的日志減少和可能的無監(jiān)督式去重復處理。
如果要執(zhí)行url的歸類,則使用另一個場景。圖9a示出了其中輸入922包括大url數(shù)據集的場景,該數(shù)據集可以使用本發(fā)明的實施例中將相似的url分組在一起而在輸出924中顯著減少。這種方法是有用的,例如,對于執(zhí)行自動web日志分析。
圖9b示出了實現(xiàn)這種類型的處理的方法的流程圖。在902,接收要處理的數(shù)據記錄。這些數(shù)據記錄包括具有url數(shù)據的條目,例如在圖9a的輸入922中所示出的。
在904,利用“/”字符作為記號化器分隔符來執(zhí)行記號化。這與使用空格作為分隔符的方法(如對前面的示例所描述的)形成對比。通過使用“/”字符作為分隔符,這將典型的url地址分解成其組成部分,從而允許檢查不同url數(shù)據輸入的可變部分。這個動作使用“/”符號將url數(shù)據分解成多個子集進行處理。
其后,在906,處理每個數(shù)據子集。在908,執(zhí)行分類,以將日志數(shù)據分組成具有足夠相似性的日志數(shù)據的分組。其后,在910,向系統(tǒng)用戶提供后處理和結果的生成。
還有另一個可能的應用是引導正則表達式生成。圖10a示出了其中輸入1022包括大url數(shù)據集并且其中輸出1024包括與輸入對應的自動生成的正則表達式的場景。這種方法是有用的,例如,對于允許人們從文本樣本的語料庫中學習。
圖10b示出了執(zhí)行這種類型的處理的方法的流程圖。在1002,接收要處理的數(shù)據記錄。這些數(shù)據記錄包括具有url數(shù)據的條目,諸如圖10a的輸入1022中所示出的。
在1004,執(zhí)行數(shù)據子集化。如前所述,利用“/”字符作為記號化器分隔符執(zhí)行記號化。通過使用“/”字符作為分隔符,這將典型的url地址分解成其組成部分,從而允許檢查不同url數(shù)據輸入的可變部分。
其后,在1006,處理每個數(shù)據子集。在1008,執(zhí)行分類,以將日志數(shù)據分組成具有足夠相似性的日志數(shù)據的分組。
與先前描述的方法不同,在這里,在1010,追蹤組內的可變部分的不同值。通過追蹤給定組中的可變部分的所有不同值,這識別出該可變部分的可能值的范圍。然后,可以將這個值范圍轉化為與組簽名內那個值范圍對應的正則表達式。
在1012,然后可以為分類創(chuàng)建語法。用于分類的語法允許例如為給定的分類組生成任何附加的樣本輸出(例如,用于測試目的)。其后,在1014,向系統(tǒng)用戶提供后處理和結果的生成。
另一個用例是匹配堆棧蹤跡。圖11a示出了其中輸入1122包括蹤跡并且輸出1124識別相似但不必相同的java異常的場景。
圖11b示出了實現(xiàn)這種類型的處理的方法的流程圖。在1102,接收要處理的數(shù)據記錄。這些數(shù)據記錄包括具有多行消息數(shù)據的條目,諸如圖11a的輸入1122中所示出的。
在1104,使用換行符作為記號化器分隔符來執(zhí)行記號化。這是除之前描述的使用其它分隔符(諸如空格分隔符)的方法之外的另一種方法。因此,它創(chuàng)建了多個數(shù)據子集。
其后,在1106,處理每個數(shù)據子集。在1108,執(zhí)行分類,以將日志數(shù)據分組成具有足夠相似性的日志數(shù)據的分組。其后,在1110,向系統(tǒng)用戶提供后處理和結果的生成。
本發(fā)明的實施例還可以被用于編目sql工作并執(zhí)行工作分類。圖12示出了這個應用,其中輸入1202包括sql代碼的集合,并且輸出1204包括已經分組在一起的sql的分類版本。
圖13示出了體現(xiàn)本發(fā)明的實施例對it支持目的的有利應用的系統(tǒng)1300。在這里,維護存儲設備1310,以保持日志記錄1312。還可以維護問題數(shù)據庫1314,以保持關于先前的問題場景和關聯(lián)的問題解決方案的歷史信息。這個問題db1314可以包括例如消息簽名和相關的注釋、評論、先前的解決方案以及與問題解決方案相關的專家系統(tǒng)數(shù)據的集合。db1314可以包括從任何合適的來源填充的信息。在一種情況下,當問題得以解決時,db1314被更新,并且與模式/消息簽名關聯(lián),使得可以以相同的方式解決未來的發(fā)生。此外,產品的原始開發(fā)/測試團隊可以是db1314中至少部分知識庫的來源。
it支持系統(tǒng)1304可以包括日志分組引擎1308,以對日志記錄1312進行分組和分類。日志分組引擎1308實現(xiàn)上述功能,以對消息進行分類,以識別這些消息并將它們指派到適當?shù)慕M中。
it支持系統(tǒng)1304還可以包括it支持分析引擎1309。這個支持引擎由it支持人員用來解決由該支持人員管理/支持的系統(tǒng)中可能出現(xiàn)的問題。這個分析引擎通過識別日志記錄1312中的模式、然后在問題db1314內匹配這些模式來發(fā)揮作用。就識別出的模式涉及可能的問題場景的程度而言,數(shù)據庫1314然后可以提供關于如何解決和糾正可能的問題的建議。
例如,考慮當接收到指示在系統(tǒng)中存在操作或性能問題的用戶投訴時的場景。支持人員將操作支持系統(tǒng)1304,以分析相關日志記錄,以檢查與已知問題相關聯(lián)的模式的存在,然后使用可能與已知問題模式關聯(lián)的知識庫、專家系統(tǒng)或菜單/配方來解決問題。
作為另一個場景,支持系統(tǒng)可以被用于通過使用系統(tǒng)檢查與將來可能發(fā)生的已知使用情況關聯(lián)的模式來執(zhí)行預測。在這種情況下,如果預測出的情況是問題情況,則支持人員可以在它造成任何中斷或影響用戶體驗之前采取先發(fā)制人的動作來預期并可能糾正問題。
作為另一個示例情況,考慮系統(tǒng)被用于檢查操作環(huán)境中的異常的情況。由系統(tǒng)審查日志記錄,并檢查是否存在任何非預期的日志消息或日志消息序列。這些檢測到的異常可以指示存在應當由支持人員糾正的操作問題或安全漏洞。應當指出,該處理可以被自動化,在代替支持人員(人類)的意義上,可以實現(xiàn)自動化的系統(tǒng),以提供這里討論的功能。
關于可以結合本發(fā)明的實施例使用的示例性日志分析系統(tǒng)的進一步細節(jié)在于2015年4月3日提交的美國臨時申請no.62/142,987中公開。
以上描述是在以批處理/離線模式執(zhí)行動作的一種可能類型的處理的上下文中提供的。在這種模式下,所有的輸入都在一批中提供,然后處理返回輸出。
替代方法是在在線模式下執(zhí)行處理。在這種新方法中,所有輸入日志數(shù)據不必在一批中提供。相反,分組可以以遞增方式執(zhí)行,其中在日志記錄到達系統(tǒng)時逐個提供日志記錄。對于每個新的日志記錄,系統(tǒng)發(fā)現(xiàn)它是否屬于現(xiàn)有的組,或者是否需要創(chuàng)建新的組并使用這個記錄作為樣本。每次將新記錄指派到現(xiàn)有的組中時,系統(tǒng)更新計數(shù)以及可以更新簽名。在線方法有若干應用/優(yōu)點。例如,可以使用它在日志記錄進入系統(tǒng)時對日志記錄進行分類。這與離線方法不同,其中分類任務可以根據請求運行。
根據一些實施例,本發(fā)明涉及一種方法,包括:從處理系統(tǒng)接收多個日志記錄,所述多個日志記錄包括一個或多個第一日志記錄和一個或多個第二日志記錄;將所述一個或多個第一日志記錄與所述一個或多個第二日志記錄進行比較,以確定所述一個或多個第一日志記錄與所述一個或多個第二日志記錄有多相似,所述一個或多個第一日志記錄與所述一個或多個第二日志記錄進行比較是通過將所述一個或多個第一日志記錄獨立地記號化為第一多個記號并將所述一個或多個第二日志記錄獨立地記號化為第二多個記號,其中依照記號內容和位置兩者生成與所述第一多個記號和所述第二多個記號之間的重疊程度對應的相似性值;以及至少部分地基于相似性值是否小于閾值水平而將所述一個或多個第一日志記錄和所述一個或多個第二日志記錄分類到相同或不同的組中。在一些實施例中,所述一個或多個第一日志記錄和所述一個或多個第二日志記錄被分類到一個組中,還包括:存儲用于該組的簽名,該簽名包括:由所述一個或多個第一日志記錄和所述一個或多個第二日志記錄共享的一個或多個重疊部分,以及在所述一個或多個第一日志記錄與所述一個或多個第二日志記錄之間不同的一個或多個可變部分。在一些實施例中,該方法還包括:存儲用于該組的組標識符;存儲用于該組的樣本日志記錄;以及存儲與該組關聯(lián)的日志記錄的計數(shù)、用于該組的組簽名或用于該組的成員信息中的至少一個。在某些實施例中,相似性值被計算為hamming距離的函數(shù)。該方法還可以包括:對所述一個或多個第一日志記錄和所述一個或多個第二日志記錄中的記號的數(shù)量進行計數(shù);以及使用已經為所述一個或多個第一日志記錄和所述一個或多個第二日志記錄計數(shù)的記號的數(shù)量來識別子集,其中所述一個或多個第一日志記錄與給定子集中的所述一個或多個第二日志記錄進行比較。在一些實施例中,將所述一個或多個第一個日志記錄和所述一個或多個第二個日志記錄作為記錄的批量組進行處理。所述一個或多個第一日志記錄和所述一個或多個第二日志記錄可以被分類到一個組中,并且來自處理系統(tǒng)的多個日志記錄被在線處理,這種方法包括:接收個體日志記錄;將該個體日志記錄與組中的樣本日志記錄進行比較,以確定該個體日志記錄與組中的樣本日志記錄之間的重疊程度;如果重疊程度小于閾值水平,則將該個體日志記錄分類到新組中;而如果重疊程度大于閾值水平,則將該個體日志記錄分類到該組中。多組日志記錄可以組合在一起,其中與這多組日志記錄關聯(lián)的簽名的可變部分被折疊,以識別等效的組簽名。多個處理實體可以對所述一個或多個第一日志記錄和所述一個或多個第二日志記錄并行操作。多個處理實體可以對所述一個或多個第一日志記錄和所述一個或多個第二日志記錄并行地操作。所述多個處理實體可以執(zhí)行并行地對所述一個或多個第一和第二記錄進行記號化、并行地對所述一個或多個第一和第二記錄進行分類或者并行地將多個組合并到一起當中的至少一個。該方法還可以包括從處理系統(tǒng)識別多個日志記錄中的組的序列。上述的任意組合可以根據本發(fā)明的一些實施例來實現(xiàn)。一些實施例涉及其上存儲有指令序列的計算機可讀介質,所述指令序列在由處理器執(zhí)行時,使得處理器執(zhí)行任意前述組合。一些實施例涉及一種系統(tǒng),包括:處理器和其上存儲有指令序列的存儲器,所述指令序列在由處理器執(zhí)行時,使得處理器執(zhí)行任意前述組合。
因此,已經描述的是用于以高效的方式分析數(shù)據集的改進的系統(tǒng)、方法和計算機程序產品,使得可以對數(shù)據有效地執(zhí)行分析。在一些實施例中,執(zhí)行分類操作,以生成相似日志記錄的組。這樣以聚合和信息性的方式對日志記錄進行分類。此外,可以對日志數(shù)據的組執(zhí)行基于組的增量操作,以檢測不同數(shù)據組之間的差異和相似性。也可以在分組的數(shù)據集中識別子序列。各種類型的分析可以應用到分類的數(shù)據。
系統(tǒng)體系架構概述
圖14是適于實現(xiàn)本發(fā)明實施例的說明性計算系統(tǒng)1400的框圖。計算機系統(tǒng)1400包括用于傳送信息的總線1406或其它通信機制,它互連子系統(tǒng)和設備(諸如處理器1407、系統(tǒng)存儲器1408(例如,ram)、靜態(tài)存儲設備1409(例如,rom)、磁盤驅動器1410(例如,磁性或光學)、通信接口1414(例如,調制解調器或以太網卡)、顯示器1411(例如,crt或lcd)、輸入設備1412(例如,鍵盤)和光標控制。
根據本發(fā)明的一個實施例,計算機系統(tǒng)1400通過處理器1407執(zhí)行系統(tǒng)存儲器1408中包含的一條或多條指令的一個或多個序列來執(zhí)行具體操作。這種指令可以從另一個計算機可讀/可用介質(諸如靜態(tài)存儲設備1409或磁盤驅動器1410)讀入系統(tǒng)存儲器1408。在替代實施例中,可以使用硬連線的電路系統(tǒng)代替或與軟件指令組合,以實現(xiàn)本發(fā)明。因此,本發(fā)明的實施例不限于硬件電路系統(tǒng)和/或軟件的任意特定組合。在一個實施例中,術語“邏輯”是指用于實現(xiàn)本發(fā)明的全部或部分的軟件或硬件的任意組合。
如本文所使用的,術語“計算機可讀介質”或“計算機可用介質”是指參與向處理器1407提供指令以供執(zhí)行的任何介質。這種介質可以采取許多形式,包括但不限于非易失性介質和易失性介質。非易失性介質包括例如光盤或磁盤,諸如盤驅動器1410。易失性介質包括動態(tài)存儲器,諸如系統(tǒng)存儲器1408。
計算機可讀介質的常見形式包括例如軟盤、柔性盤、硬盤、磁帶、任何其它磁性介質,cd-rom、任何其它光學介質,打孔卡、紙帶、任何具有圖案或孔的其它物理介質,ram、prom、eprom、flash-eprom、任何其它存儲器芯片或盒式存儲器、基于云的存儲器或計算機可以從其讀取的任何其它介質。
在本發(fā)明的實施例中,執(zhí)行實踐本發(fā)明的指令序列是由單個計算機系統(tǒng)1400執(zhí)行的。根據本發(fā)明的其它實施例,通過通信鏈路1415耦合的兩個或更多個計算機系統(tǒng)1400(例如,lan、ptsn或無線網絡)可以彼此協(xié)調地執(zhí)行實踐本發(fā)明所需的指令序列。
計算機系統(tǒng)1400可以通過通信鏈路1415和通信接口1414來發(fā)送和接收消息、數(shù)據和指令,包括程序,即,應用代碼。接收到的程序代碼可以在其被接收時由處理器1407執(zhí)行,和/或存儲在盤驅動器1410或其它非易失性存儲器中以供稍后執(zhí)行??梢詮脑诖鎯υO備1431中維護的數(shù)據庫1432訪問數(shù)據,數(shù)據庫1432是使用數(shù)據接口1433來訪問的。
在前面的說明書中,已經參照其具體實施例描述了本發(fā)明。但是,顯而易見的是,在不背離本發(fā)明的更廣泛的精神和范圍的情況下,可以對其進行各種修改和改變。例如,上述處理流程是參考處理動作的特定次序來描述的。但是,所描述的處理動作中的許多的次序可以改變,而不會影響本發(fā)明的范圍或操作。相應地,說明書和附圖應當被認為是說明性而不是限制性的。此外,所示實施例不需要具有所示的所有方面或優(yōu)點。結合特定實施例描述的方面或優(yōu)點不一定限于那個實施例,并且可以在任何其它實施例中實踐,即使沒有如此示出。而且,貫穿本說明書,對“一些實施例”或“其它實施例”的引用意味著結合實施例描述的特定特征、結構、材料或特點包括在至少一個實施例中。因此,短語“在一些實施例中”或“在其它實施例中”貫穿本說明書的各個地方的出現(xiàn)不一定是指相同的實施例。