一種基于圖結構的日志聚類方法
【技術領域】
[0001] 本發明涉及文本聚類領域,具體涉及一種基于圖結構的日志聚類方法。
【背景技術】
[0002] 隨著信息技術的飛速發展和集群規模的不斷擴大,隨之產生海量日志數據,然而 卻沒有對日志數據進行有效的分析與挖掘。日志數據記錄了系統的運行信息,挖掘日志數 據具有重要意義,例如通過分析日志數據我們可以構建智能運維系統,完成故障定位、故障 預警等功能。對日志進行精準的類別標記,是日志數據挖掘的重要方向。基于此我們通過對 海量日志聚類,自動識別日志合適的類別數目。通過提取各類別特征,生成日志類別特征 庫,并根據特征庫對新日志進行類別標記。其中,日志聚類方法的選擇是重中之重。傳統的 聚類算法并不能完成海量日志聚類的需求。例如傳統的K-Mean S、K-Med〇id聚類算法,要求 指定聚類的個數,不能自動識別日志合適的類別數目。傳統的Denclue聚類算法為了得到較 佳的聚類效果,需要經過不斷的實驗來獲得合適的聚類數目,參數難以控制,計算量過大, 且聚類不能保證得到真實的類別數目。因此需要探索新的日志聚類模型。
【發明內容】
[0003] 為克服上述缺陷,本發明提供一種基于圖結構的日志聚類方法,依據類別特征知 識庫可對日志進行分類,大大提高了面對海量日志聚類的精確度。
[0004] 為了實現上述發明目的,本發明采取如下技術方案:
[0005] -種基于圖結構的日志聚類方法,所述方法包括:基于文本分詞、向量相似度以及 對最大連通子圖日志進行聚類,獲取特征庫;并根據特征庫中的類別特征對海量日志進行 類別標記。
[0006] 優選的,所述獲取特征庫包括下述步驟:
[0007] (1)將原始日志結構化,生成結構化日志數據;
[0008] (2)構建分詞庫;
[0009] (3)依據詞庫將結構化的日志向量化;
[0010] ⑷刪除重復的日志向量;
[0011] (5)確定日志相似關系圖,生成各個類別包含的日志向量集合;
[0012] (6)構建特征庫。
[0013] 進一步地,所述步驟(1)中,生成結構化日志數據包括:輸入原始日志,對半結構化 的原始日志按列結構化,輸出結構化日志數據。
[0014] 進一步地,所述步驟(2)中,構建分詞庫包括,輸入結構化日志數據,獲取所述結構 化日志數據包含的所有分詞,并依據預設規則刪除干擾詞,生成日志數據分詞庫,該分詞庫 中每個分詞對應一個編號;其中,
[0015] 所述干擾詞,包括IP地址、端□號和16進制數字。
[0016]進一步地,所述步驟(3)中,日志向量化包括,將包含日志核心內容的字段進行分 詞,將獲取的分詞與詞庫相匹配,并用詞庫中分詞編號代替分詞,忽略未包含在詞庫中的分 詞,并保持分詞原有的相對順序,將文本轉化為向量。
[0017]進一步地,所述步驟(5)中,確定日志相似關系圖包括:將去重后的日志向量映射 為圖中的一個點,計算點與點之間的相似度;
[0018]若兩個日志向量相似,貝所述日志向量之間存在一條邊。
[0019] 進一步地,所述判定相似度包括,設A和B分別表征兩個日志向量A= (ai,a2,…, am),B= (h,b2,…,bn); LCS( {A,B})為向量A和B的最長公共子序列;若該最長公共子序列的 長度與日志向量A和B比值皆高于經驗閾值TH,則為相似,其表達式為:
[0020]
[0021 ]進一步地,所述步驟(5)中,生成各個類別包含的日志向量集合包括;
[0022] 將日志相似關系圖中的每個最大連通子圖定義為一個類,每一類包含的日志向量 即該最大連通子圖包含的點。
[0023] 進一步地,所述步驟(6)中,構建特征庫包括:各個日志類別的特征為該類別包含 的所有日志向量的最長公共子序列;設第i類集合Ri = {Si,S2,…,SP},LCS(Ri)為第i類中所 有日志向量的最長公共子串,wi為第i類的特征,其中 Wi = LCS(Ri);
[0024] 輸入每個日志類別所包含的日志向量集合,輸出特征庫。
[0025] 優選的,所述對海量日志進行類標記,具體步驟包括:
[0026] 實時采集日志數據,將日志結構化,輸出結構化日志數據;
[0027] 對日志核心內容的字段進行分詞,按預設規則去除干擾詞;將日志分詞集合中的 每個詞和原詞庫相匹配,若存在新詞,則將該新詞添加至詞庫,并輸出新詞庫;
[0028]所述對日志進行結構化包括:
[0029] 輸入新詞庫和日志數據;
[0030] 將日志數據由文本轉為向量;
[0031] 將包含日志內容的字段進行分詞,將所述分詞與詞庫匹配,用詞庫中分詞的編號 代替分詞,忽略未包含詞庫中的分詞,并保持分詞原有的相對順序,將文本轉化為向量并輸 出;
[0032]所述日志類別匹配包括:
[0033] 輸入日志向量和通過日志聚類獲得的特征庫;
[0034] 計算日志向量與特征庫中各類別特征的相似度;若日志向量和特征Wl符合相似規 貝1J,則將該日志標記為第i類,輸出攜帶標記的日志;
[0035] 若日志與特征庫中任意類別特征皆不相似,則匹配失敗;將該日志存放于故障知 識庫,并定期重新進行聚類,生成新的類別特征,以更新特征庫。
[0036] 與最接近的現有技術相比,本發明達到的有益效果是:
[0037] 該日志聚類方法,一方面無需人工指定聚類數目,自動識別海量日志中最合適的 類別數目,并支持大規模的日志聚類問題。另一方面,該方法有效保障了對原始的日志的類 別標記精準度,完成了日志的精準分類,并支持日志海量日志數據的實時分類以及離線分 類,為海量日志數據挖掘奠定了基礎。
【附圖說明】
[0038]圖1為一種基于圖結構的日志聚類方法總流程圖;
[0039]圖2為日志聚類方法流程圖;
[0040]圖3為日志向量化結構示意圖;
[0041 ]圖4為日志相似關系不意圖;
[0042]圖5為日志類別標記方法流程圖。
【具體實施方式】
[0043]以下將結合附圖,對本發明的【具體實施方式】作進一步的詳細說明。
[0044]如圖1所示,一種基于圖結構的日志聚類方法,所述方法包括:基于文本分詞、向量 相似度以及對最大連通子圖日志進行聚類,獲取特征庫;并根據特征庫中的類別特征對海 量日志進行類別標記。
[0045] 1、獲取特征庫包括下述步驟:
[0046] (1)將原始日志結構化,生成結構化日志數據;包括:輸入原始日志,對半結構化的 原始日志按列結構化,輸出結構化日志數據。
[0047] 例如Linux syslog日志形式如表1 · 1所示,按列結構化為Timestamp、Level、 Source、Message等字段。原始syslog經結構化處理后變為表1.2中格式:
[0048] 表1 · 1
[0049]
[0052] (2)構建分詞庫;包括:輸入結構化日志數據,獲取所述結構化日志數據包含的所 有分詞,并依據預設規則刪除干擾詞,生成日志數據分詞庫,該分詞庫中每個分詞對應一個 編號;其中,
[0053] 所述干擾詞,包括IP地址、端口號和16進制數字。
[0054] 例如上表的Message字段中 "255 · 255 · 255 · 255 | 62959 1127 · 0 · 0 · 11 58656" 等分詞 是日志影響日志聚類的干擾詞,可選擇按正則表達式定義規則將其去除,得到表1.3所示分 詞庫:
[0055] 表1.3
[0056]
[0058] (3)依據詞庫將結構化的日志向量化;
[0059] 將包含日志核心內容的字段進行分詞,將獲取的分詞與詞庫相匹配,并用詞庫中 分詞編號代替分詞,忽略未包含在詞庫中的分詞,并保持分詞原有的相對順序,將文本轉化 為向量。例如 Connection from UDP: [255.255.255.255] :62959向量化為(35,65,181), Received SNMP packet(s)from UDP:[127.0.0.1]:58656向量化為(147,168,133,161,65, 181)〇
[0060] 如圖3所示,(4)刪除重復的日志向量;日志向量中包含許多的相同向量;