2017-03-31 73 views
0

我剛開始使用grok for logstash,並試圖使用grok過濾器解析我的日誌文件。 我的logline是類似下面Grok跳過一部分郵件行

2017年3月30日13時26分13秒[00089] TIMER XXX.TimerLog:entType [機構],queueType [輸出],memRecno = 446323718,audRecno = 2595542711,經過時間= 998ms

我想只捕捉初始日期/時間戳記,entType [organization]elapsed time = 998ms

但是,它看起來像我必須匹配行中的每個單詞和數字的模式。有沒有辦法可以跳過它?我試圖到處找,但找不到任何東西。請幫助。

+1

你有沒有試過繞過你不關心的東西?(?:。*)? Grok語法只是上下文感知嵌套正則表達式的支持;所有常用的方法都適用。 –

回答

0

按照Charles Duffy的評論。

這樣做有2種方式: 的GREEDYDATA方式(?:.*)

grok { 
    match => {"message" => "^%{DATE_US:dte}\s*%{TIME:tme}\s*\[%{GREEDYDATA}elapsed time\s*=\s*%{BASE10NUM}" 
} 

或者,告訴它忽略了一個比賽,並期待在列表中的下一個。

grok { 
    break_on_match => false 
    match => { "message" => "^%{DATE_US:dte}\s*%{TIME:tme}\s*\[" } 
    match => { "message" => "elapsed time\s*=\s*%{BASE10NUM:elapsedTime}" 
} 

然後,您可以歸隊日期&時間到一個單一的領域,將其轉換爲一個時間戳。