2017-10-11 84 views
1

我對ELK和Grok過濾很新,而且我在grok過濾器中解析這個特定的模式很困難。Grok過濾器的時間計數器H​​H:MM

我已經使用grok debugger嘗試解決這個問題,但儘管我喜歡該工具,但我只是被自定義模式弄糊塗了。

最後,我希望解析大量由filebeat發送到logstash的日誌文件,然後將解析的日誌發送到elasticsearch並使用kibana或一些類似的可視化工具進行顯示。

我需要解析遵循以下圖案中的線:

1310 2017-01-01 16:48:54 [325:51] [326:49] [359:57] Some log info text 
  • 前4位是一個日誌類型標識符,以及將用於分組。我稱之爲「LogLineID」字段。
  • 日期格式爲YYYY-MM-DD HH:MM:SS,並且分析正常。我稱之爲「LogDate」字段。
  • 但現在問題開始了。在方括號內,我有櫃檯,如果你喜歡,可以格式化爲MM:SS。我不能爲了我的生活找到一種方法來排除這些,但我需要比較這些時間,因此我想將它們存儲爲分鐘和秒,而不僅僅是數字。
    • 首先是一個計數器「TimeSpent」
    • 第二個是一個計數器「TimeStarted」和
    • 第三個是一個計數器「TimeSinceDown」。
  • 然後,最後來到信息文本,我簡單地申請了%{GREEDYDATA:LogInfo}。

我注意到分鐘的量可能會遠遠超過一個小時內的標準60分鐘的高,所以我可以在這裏找錯了樹試圖與日期模式,如TIMESTAMP_ISO8601解析它,但隨後,我真的不知道該怎麼做。

所以,我來到這麼遠:

%{NUMBER:LogLineID} %{TIMESTAMP_ISO8601:LogDate} 

,並分別爲所提能夠(通過切開方括號的部分)與

%{GREEDYDATA:LogInfo} 

解析日誌信息文本創建字段LogInfo。

但這就是我卡住了。有人可以幫我弄清其餘的嗎?

提前非常感謝。

PS!我也發現%{NUMBER:duration},但它可以盡我所知地只用點解析時間戳,而不是冒號。

回答

0

啊,有一個空間..其實,我是誤導自己,每個人都在我的問題,因爲這實際上並不是導致問題的日誌行。我只是拿第一個,沒有意識到問題真的在哪裏,但引起問題的那個在括號內有一個空格,如[ 42:31]。也有一些地方,有兩個空格,所以我設法解決這個問題的辦法是包括\[%{NUMBER}之間的%{SPACE}

%{NUMBER:LogLineID} %{TIMESTAMP_ISO8601:LogDate} \[%{SPACE}%{NUMBER:TimeSpentMinutes}\:%{NUMBER:TimeSpentSeconds}\] \[%{SPACE}%{NUMBER:TimeStartedMinutes}\:%{NUMBER:TimeStartedSeconds}\] \[%{SPACE}%{NUMBER:TimeSinceDownMinutes}\:%{NUMBER:TimeSinceDownSeconds}\] %{GREEDYDATA:LogText} 

我仍然沒有解決分秒的合併,但是我也可以在後期處理。

感謝林頓對我的問題表現出興趣,並抱歉不早回覆。

希望這個解決方案能夠幫助其他人(甚至是我自己),如果他們陷入同樣的​​問題。

請注意:在grok'ing之前請仔細閱讀日誌.. :)

0

grok正則表達式可以幫助您解決問題。

但首先我想確保你的意思是[325:51] [326:49] [359:57]是你想要獲取的三個組件?它會返回結果一樣:

TimeSpent: 325:51 
TimeStarted: 326:49 
TimeSinceDown: 359:57 

是我得到的時候,你可以用我的方式對以下建議:

  1. 定義自己的自定義模式文件,並添加圖案你的文件。
  2. 只需使用表達logstash的conf文件的過濾器部分

希望它會幫助你