我對ELK和Grok過濾很新,而且我在grok過濾器中解析這個特定的模式很困難。Grok過濾器的時間計數器HH: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},但它可以盡我所知地只用點解析時間戳,而不是冒號。