大數據之智能日誌分析系統的思考

大數據之智能日誌分析系統的思考

利用機器幫助運維人員實現日誌分析,發現問題,提出解決方案是我比較感興趣的一個方面,下面的系列文章,我準備從這個方向入手,嘗試構建智能日誌分析系統,並把系統構建中的點滴記錄下來分享給每一位兄弟姐妹。在系統的構建過程中,也希望得到大家的指導、幫助。

日誌數據作為IT系統重要的一種數據源,一直是分析問題、解決問題最直接的手段。

在日常運維中,大量的機器日誌使得處理問題、追蹤日誌變得困難重重,因為產生了大量處理日誌的工具,ELK(ElasticSearch,LogStash,Kibana)就是一款開源日誌分析軟件,ELK非常強大且有效,他可以實現日誌數據的收集、過濾、可視化等。

但在使用ELK的過程中有一個非常重要的問題,那就是ELK非常依賴使用者的知識體系,我們必須告訴ELK我們想要什麼、數據在哪裡,ELK才能按照我們的要求查詢並可視化數據,對那些我們不瞭解的就無能為力了。

近些年來機器學習算法已經被證明在解決某些複雜問題上是確實可行的。從手寫體識別到汽車自動駕駛、從垃圾郵件過濾到醫學診斷,機器學習已經在眾多需要行業專家的領域提供瞭解決方案。

監督型機器學習

在眾多的機器學習算法中,監督型機器學習是數據科學中最強有力的工具之一。

監督型機器學習的基本原理是“利用樣本數據進行學習”,算法依賴於問題領域相關的數據以及數據的標籤(元數據)。

例如:圖像識別中,照片(本質上是一組像素)就是領域數據,同時我們還提供一個標籤用於表示照片的含義,照片是一隻貓、一輛車等。

在監督學習中為數據加標籤(標記數據)是一個很重要的部分,他直接影響到輸出結果的質量。

通過這種方式機器學習算法能夠篩選大量數據,建立必要的相關性,從而推斷出數據之間的相互依賴管理。

在日誌處理過程中,我們可以利用分類器標記出我們“感興趣的數據”。

基於上述理論,日誌分析其實可以劃分為分類問題,從而拆分為:

1、創建數據標籤庫

2、訓練分類器

1如何創建標籤庫?

日誌關聯性問題是一個重要的問題,某個日誌條目可能對某個用戶或事件非常有用,但對另外一些用戶或事件則毫無意義。而且,在數據標記過程中“感興趣的數據”有可能無法被正確標記,或者數據就被丟棄掉了。

  • 關注用戶行為

我們可以收集用戶使用我們軟件的交互行為。關注哪些告警、查看了哪些日誌、創建了哪些數據的圖表等等。這些交互行為都可以表明什麼是用戶關心、哪些是對用戶重要的。另外,不同行業、不同領域的客戶對我們獲取用戶行為是有非常重要幫助的。

  • 獲取網絡公共資源,例如公共問答網站

例如:Stack Overflow, GitHub,甚至WiKi,百度知道等站點都包含大量的知識,這些知識可以用來評估日誌是否重要甚至是日誌根因的解決方法。

利用這些資源我們可以構建出非常豐富的標記日誌數據集,以及有關日誌相關性,頻度的元數據,甚至可以給出解決問題的方案。

2如何訓練分類器?

當我們有了充足的日誌數據以及相應的標籤,我們就可以構建日誌分類器了。

分類器可以有很多方式Linear Support Vector Machines(SVM),SVM簡單易證明。

關於SVM可參考:

http:// www.cs.cornell.edu/people/tj/publications/joachims_98a.pdf

https:// zh.wikipedia.org/wiki/%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA

另一種可行的分類器是隨機森林,隨機森林特別適用於特徵分類(非數值)的情況。

關於隨機森林:

https:// www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm

從局部看分類器簡單,但是如果將TB級別的數據,以及所有用戶的交互行為組合到一起就可以形成龐大的關聯信息,從而訓練出強力的機器學習代碼,從而實現智能日誌分析。

大數據之智能日誌分析系統的思考


分享到:


相關文章: