1. 程式人生 > >技本功丨web伺服器日誌自動解析工具不是唯一的工具,但卻承包了我最深沉的愛!

技本功丨web伺服器日誌自動解析工具不是唯一的工具,但卻承包了我最深沉的愛!

微信圖片_20181206152739.png

曾經有個web伺服器日誌自動解析工具擺在我面前,我沒有珍惜。等我失去的時候我才追悔莫及,人世間最痛苦的事莫過於此。

微信圖片_201812061527391.png

事情就是這樣發生的——

當前web伺服器的多樣化使得訪問日誌的資料清洗變得越來越複雜,企業需要投入專業的資料清洗人員編寫資料清洗規則(解析規則或者解析正則),或者需要關心web伺服器訪問日誌的生成規則。

手寫web服務資料解析規則存在以下3個問題:

1、需要投入專業技術人才完成編寫,成本高;

2、人工書寫解析規則容易犯錯;

3、解析規則生成不可複用,新的web服務需要重新編寫。

如果能自動生成web伺服器的日誌,將大大提高web伺服器日誌接入和資料視覺化速度。於是我打算好好研究一番,看看怎麼可以實現,浣熊大神知曉後,對我說:你可以試試袋鼠雲web伺服器日誌自動解析工具。

當時,我自我牛逼地覺得憑自己的技術實力,完全可以不用藉助啥子工具。但是,當我聽到浣熊大神詳細介紹完袋鼠雲技術團隊自研的日誌解析規則自動生成元件,聽到它不僅適用於nginx、apcahe、iis伺服器,同時相容類似這三種伺服器日誌規範的其他web伺服器後,我當場就震驚了!

微信圖片_201812061527392.png

如果上天能夠給我一個再來一次的機會,我會對袋鼠雲日誌團隊的浣熊說四個字:請給我用,如果非要在前面加上一個期限,我希望是……一萬年……

微信圖片_201812061527393.png

獨樂樂不如眾樂樂,所以在此特地將浣熊大神的技術筆記(以下內容將詳細說明web日誌解析規則自動生成的過程,關鍵步驟有圖片演示)和總結髮言分享給大家,收好不謝!

微信圖片_201812061527394.png

web伺服器的日誌往往有著一定的規範,比如nginx的日誌規範如圖所示

微信圖片_201812061527395.png

 如上設定,日誌內容將嚴格按照設定的欄位順序列印,缺失的欄位會適用佔位符,如符號‘-‘,各欄位被分隔符依次分開。

以下內容的基本原理是:

1、日誌取樣,獲取行日誌分割符,把日誌按照分隔符拆分;

2、依次解析分割後的欄位,生成欄位型別序列;

3、按照欄位型別和順序,依次給欄位命名,生成解析規則;

以上過程的流程圖如圖所示:

微信圖片_201812061527396.png

樣例演示

使用如上的方法生成下圖所示的nginx樣例日誌的解析規則:

微信圖片_201812061527397.png

首先進行欄位拆分,按照欄位順序生成正則序列,如下圖所示,樣例日誌中依次包含IP、時間、URL,數字和使用者瀏覽器標識useragent欄位;

微信圖片_201812061527398.png

然後按照正則序列對欄位進行對映,樣例日誌是nginx日誌,nginx日誌的預設型別和欄位對映關係如下:

IP->remoteAddr,

TIMESTAMP->timeLocal,

URL->request,

NUM1->status,

NUM2->bodybytesSend,

USERAGENT->useragent;

對映之後生成預設解析規則,結果如下圖所示,生成結束。

然後對生成的解析規則進行多輪檢驗並重復以上過程,最終生成匹配度最高的解析規則。

微信圖片_201812061527399.png

浣熊說

(1)本發明提供的web伺服器訪問日誌解析規則自動生成的方法,配置簡單,自動化生成解析規則,且適用於主流web伺服器訪問日誌,減少人為編寫解析規則的負擔。

(2)本發明提供的web伺服器訪問日誌自動解析系統,一鍵生成web訪問日誌資料透析儀表板,降低企業分析日誌的難度。

(3)基於以上方法,袋鼠日誌幫助企業實現了在分鐘內搭建web伺服器日誌視覺化場景。

微信圖片_2018120615273910.png