我对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},但它可以尽我所知地只用点解析时间戳,而不是冒号。