當前web服務器的多樣化使得訪問日誌的數據清洗變得愈來愈複雜,企業須要投入專業的數據清洗人員編寫數據清洗規則(解析規則或者解析正則),或者須要關心web服務器訪問日誌的生成規則。手寫web服務數據解析規則存在如下3個問題:(1)須要投入專業技術人才完成編寫,成本高;(2)人工書寫解析規則容易犯錯;(3)解析規則生成不可複用,新的web服務須要從新編寫。若是能自動生成web服務器的日誌,將大大提升web服務器日誌接入和數據可視化過程。基於此,袋鼠雲技術小組自研了日誌解析規則自動生成組件,適用於nginx、apcahe、iis服務器,同時兼容相似這三種服務器日誌規範的其餘web服務器。如下內容將詳細說明web日誌解析規則自動生成的過程,關鍵步驟有圖片演示。html
web服務器的日誌每每有着必定的規範,好比nginx的日誌規範如圖所示,參見這裏:nginx
如上設置,日誌內容將嚴格按照設定的字段順序打印,缺失的字段會適用佔位符,如符號‘-‘,各字段被分隔符依次分開。web
如下內容的基本原理是:瀏覽器
(1)日誌取樣,獲取行日誌分割符,把日誌按照分隔符拆分;服務器
(2)依次解析分割後的字段,生成字段類型序列;3d
(3)按照字段類型和順序,依次給字段命名,生成解析規則;日誌
以上過程的流程圖如圖所示:htm
樣例演示圖片
使用如上的方法生成下圖所示的nginx樣例日誌的解析規則:rem
首先進行字段拆分,按照字段順序生成正則序列,以下圖所示,樣例日誌中依次包含IP、時間、URL,數字和用戶瀏覽器標識useragent字段;
而後按照正則序列對字段進行映射,樣例日誌是nginx日誌,nginx日誌的默認類型和字段映射關係以下:
IP->remoteAddr,
TIMESTAMP->timeLocal,
URL->request,
NUM1->status,
NUM2->bodybytesSend,
USERAGENT->useragent;
映射以後生成默認解析規則,結果以下圖所示,生成結束。
而後對生成的解析規則進行多輪檢驗並重復以上過程,最終生成匹配度最高的解析規則。