使用grok解析log (Logstash)

Logstash常使用grok語法來解析資料,可以再匯入其它平台之前對資料做拆分,建立正確的格式。

grok是使用以下的方式處理log,pattern就是你希望解析後的格式,tag就是你取的名字

%{PATTERN:tag}

可以到這個網址去實作https://grokdebugger.com/

Pattern

NUMBER處理數字
DATA處理字串
NOTSPACE非空格內容
IP處理IPv4 or IPv6
MONTHNUM處理月份
MONTHDAY處理日
TIME處理時間
GREEDYDATA處理多個字串除了換行

假設今天有一段log

04/18-00:59:45.385191 [**] 

起始的04是月份,所以我們使用%{MONTHNUM:month},請記住pattern要使用大寫。

再來遇到一個”/”,log中不相關的內容我們就可以照抄,不過要注意有些字元需要使用”\”跳脫,例如”[“, “]”,一個簡單的小技巧就是如果不確定需不需要跳脫,都加”\”就好了。

所以我們parse的內容就會變成

%{MONTHNUM:month}/

接下來18是日期,所以使用%{MONTHDAY:day},遇到了一個無關的”-“

%{MONTHNUM:month}/%{MONTHDAY:day}-

再來00:59:45.385191剛好可以直接被TIME這個pattern match,所以結果是

%{MONTHNUM:month}/%{MONTHDAY:day}-%{TIME:time}

最後遇到一個空格還有[**],剛剛提到”[]”這兩個都需要跳脫,另外兩個星星其實在這個log中沒什麼意義,你可以選擇照打,也可以給他一個pattern但不給他tag,這樣parse後的結果就不會出現,等於我們忽略掉了。我們使用DATA這個pattern來給**。

最終的結果

%{MONTHNUM:month}/%{MONTHDAY:day}-%{TIME:time} \[%{DATA}\]
Not a hacker
Back To Top
error: 內容被保護 !!