日志分类存放_博特智能|文本智能聚类——千万日志一览无余
對于海量文本型數據比如日志,如何從中提取日志模式以便更快地從文本中獲取關鍵信息。本文先簡單介紹了行業競品的相關產品形態,然后重點介紹了一種基于機器學習的日志智能聚類解決方案——基于圖結構的聚類方法。
目錄
- 1. 價值收益
- 1.1. 背景
- 1.2. 目標
- 1.2.1. 直接目標
- 1.2.2. 間接目標
- 2. 產品形態
- 2.1. 學術科研
- 2.2. 行業競品日志服務
- 3. 技術框架——基于圖結構的聚類方法
- 3.1. 流程框圖
- 3.1.1. 日志結構化
- 3.1.2. 構建分詞庫
- 3.1.3. 日志向量化
- 3.1.4. 確定日志相似關系
- 3.1.5. 構建特征庫
- 3.1. 流程框圖
- 3.2. 聚類應用
- 3.3. 補充
- 3.3.1. 優點
- 3.3.2. 缺點
- 3.3.3. 向量空間余弦相似度
- 4. 總結
1. 價值收益
1.1 背景
Paas和Iaas平臺上有很多很復雜的系統,每個云系統里面有很多不同的組件,每個組件之間有各自的日志輸出。隨著系統和業務的高速發展,各個系統每天產生大量的日志,有可能出現比如系統有潛在異常,但被淹沒在海量日志中;新版本上線,系統行為有變化,卻無法感知。同時,對于不同用戶或開發者自定義打的日志,其格式并不一定相同,且隨著時間的變化日志格式愈發多樣。
以上問題歸根到底,是信息太多太雜不能良好歸類,同時記錄信息的日志,往往格式多樣難以統一規范,這對于AIOps排障是一個是否頭疼的問題。如果能夠將日志采集并進行聚類模式學習,通過AI算法把海量日志劃分為少數的幾種模式,這樣原來幾千萬行的日志被歸類為幾十條,這樣就能大大加快日志查看和故障排查的效率。
1.2 目標
1.2.1 直接目標
智能聚類將相似度高的日志聚集在一起, 提取共同的日志pattern,是能帶來的直接收益。
- 有利于發現日志中的規律和共性問題,方便從海量日志中排查問題,定位故障
- 海量日志僅需少量日志模式表示,提取共性部分保留獨立信息,減少存儲成本
1.2.2 間接目標
日志聚類對于后續的功能比如日志異常檢測是非常有幫助的,錯誤日志的異常檢測需要建立在日志聚類的基礎上。
- 異常檢測:基于深度學習的日志異常檢測;通過日志的聚類分析區分系統正常運行報錯日志和系統故障日志,各類日志出現頻率的時序變化,變更發布后是否有出現新增類型的日志報錯等
- 根因分析:比如通過syslog日志來輔助定位機器故障,通過dmsg日志對潛在異常子機故障巡檢
2. 產品形態
2.1 學術科研
以安燈數據集、群開發邏輯層日志為例,左邊LogStr是原始日志,右側signature是聚類之后的形態,針對每一類日志賦予一個標簽logEvent*,相同標簽的日志即為同一類。
2.2 行業競品日志服務
對比競品某廠的日志服務SLS產品形態較為成熟。SLS提供實時日志智能聚類(LogReduce)功能,采集文本日志時,將相似度高的日志聚集在一起, 提取共同的日志pattern;能夠在搜索分析過程中幫助發現 日志的規律與特征 ,提升重要信息發現能力。對于日志的樣式無任何限制,只會根據日志相似性,提取出通用Pattern,快速獲取日志的整體概覽。
功能特點:
3. 技術框架——基于圖結構的聚類方法
基于圖結構的日志聚類方法,包括基于文本分詞、向量相似度以及最大連通子圖等方法,對日志進行聚類并獲取特征庫;根據特征庫中的類別特征對海量日志進行類別標記。
本節先介紹如何構建特征庫,再介紹如何在線上和離線進行日志聚類,最后總結說明該方法的優缺點。
3.1 流程框圖
如圖,構建特征庫注意包括三個步驟:日志向量化、確定日志相似關系和構建特征庫。
3.1.1 日志結構化
采集原始日志,提取數據字段解析格式,比如時間、特殊字符、IP等。將半結構化、非結構化的原始日志轉換成結構化日志
舉例,一下兩個syslog日志,按列可以結構化為時間戳、日志來源、日志內容等子彈,經過結構化處理之后變為下表的格式
3.1.2 構建分詞庫
獲取所有結構化日志中包含的所有分詞。預設規則,刪除干擾詞,包括但不限于IP地址、端口號、16進制數、url鏈接等等。將所有分詞編號,構建分詞庫,如下表。
3.1.3 日志向量化
3.1.4 確定日志相似關系
構建最大連通子圖,將向量化后的日志映射為圖中一個點,計算點之間的相似度;若若兩個日志向量相似,則日志向量之間存在一條邊。注意,如果多個日志向量化之后的表示完全相同,則可刪除重復的日志向量,減少重復的計算量。
如圖示例,生成各個類別包含的日志向量集合,日志相似關系圖中的每個最大連通子圖定義為一個類,每一類包含的日志向量即該最大連通子圖包含的點
相似性度量方法:最長公共子序列(注:也可采用余弦相似性等)
設A和B分別為兩個日志向量A=(a1, a2, a3, ..., am),B=(b1, b2, ..., bn),LCS(A, B) 為兩者的最長公共子序列;
舉例說明,給定兩個序列s1={1,3,4,5,6,7,7,8},s2={3,5,7,4,8,6,7,8,2},s1和s2的其中一個最長公共子序列是 {3,4,6,7,8}。
若該最長公共子序列的長度與兩個日志的長度之比均大于各自的相似度閾值,則認為兩者相似,其表達式為:
LCS(A, B) / |A| >= similarity_threshold,
LCS(A, B) / |B| >= similarity_threshold
其中|A|表示A日志向量的長度。
3.1.5 構建特征庫
如上圖,每個日志類別的特征為該類別包含的所有日志向量的最長公共子序列。舉例,第一類label1={A, B, C},則特征w1=LCS(A, B, C)
輸入每個日志類別所包含的日志向量集合,輸出特征庫。
3.2 聚類應用
聚類應用的幾個步驟:
- 離線聚類分析:若日志向量與特征庫中所有的特征都不相似,則將當前日志向量自成一類,或者直接輸出當前日志結構化之后的文本形式
- 實時在線聚類:若新輸入的日志存在新的分詞,加更新詞庫,;若日志向量與特征庫中所有的特征都不相似,則將當前日志向量自成一類,或者直接輸出當前日志結構化之后的文本形式。
3.3 補充
3.3.1 優點
- 該方法無需人工指定聚類數據,相似度閾值可以人為設定,因此可以滿足不同場景需求下的相似日志聚類
- 可對日志進行精準分類,支持海量日志數據的實時分類以及離線分類。
3.3.2 缺點
- 相似度計算方法:最長公共子序列的計算比較耗時,對于實時線上海量日志能夠更快地聚類,這里未來有一定的優化空間。
- 干擾詞的處理:該方法對于干擾詞采用直接剔除的方法,過于簡單粗暴。如果想保留部分IP等更多信息,可以在文本向量化之前增設人工規則,保留希望保留的信息。
3.3.3 向量空間余弦相似度
除了最長公共子序列的方法用于判定日志相似關系外,也可以采用諸如余弦相似度的計算方法。
余弦相似度(Cosine Similarity)用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似。
- 如圖a和b兩個向量的夾角很小,則說明a向量和b向量有很高的的相似性,極端情況下;
- 如果兩個向量在方向上完全重合,則說明a向量和b向量代表的文本完全相的,或者完全相等;
- 如圖a和b兩個向量的夾角較大或者反方向,則說明a向量和b向量的相似性很低,或者完全不相似。
因此,我們可以通過夾角的大小,來判斷向量的相似程度。夾角越小,就代表越相似。兩個日志向量A、B的相似度計算公式如下
4. 總結
本文先介紹了日志使用場景,一線運維人員面對海量日志排查問題非常低效。然后介紹了日志聚類可以提供的便捷性,以及以競品某廠的日志服務的較為成熟的產品形態。最后介紹了一種基于圖結構的日志聚類方法。該方法采用了包括基于文本分詞、向量相似度以及最大連通子圖等技術,對日志進行聚類并獲取特征庫進而實現對海量日志進行類別標記的功能。關于日志聚類的更多方法將在后續詳細介紹。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的日志分类存放_博特智能|文本智能聚类——千万日志一览无余的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 插件修复数据_APP 热修复都懂了,你会
- 下一篇: 12天背诵楞严咒的技巧_背诵楞严咒的技巧