Date 用于时间计数器的Grok过滤器HH:MM

Date 用于时间计数器的Grok过滤器HH:MM,date,time,timestamp,grok,filebeat,Date,Time,Timestamp,Grok,Filebeat,我对ELK和Grok过滤非常陌生,我正在努力解析Grok过滤器中的这个特定模式 我已经使用了来尝试解决这个问题,但是尽管我喜欢这个工具,我只是被自定义模式弄糊涂了 最后,我希望解析filebeat发送到logstash的大量日志文件,然后将解析后的日志发送到elasticsearch,并使用kibana或类似的可视化工具进行显示 我需要解析的行遵循以下模式: 1310 2017-01-01 16:48:54 [325:51] [326:49] [359:57] Some log info tex

我对ELK和Grok过滤非常陌生,我正在努力解析Grok过滤器中的这个特定模式

我已经使用了来尝试解决这个问题,但是尽管我喜欢这个工具,我只是被自定义模式弄糊涂了

最后,我希望解析filebeat发送到logstash的大量日志文件,然后将解析后的日志发送到elasticsearch,并使用kibana或类似的可视化工具进行显示

我需要解析的行遵循以下模式:

1310 2017-01-01 16:48:54 [325:51] [326:49] [359:57] Some log info text
  • 前四位是日志类型标识符,将用于分组。我将该字段称为“LogLineID”
  • 日期的格式为YYYY-MM-DD HH:MM:SS,解析为ok。我把这个字段称为“LogDate”
  • 但现在问题开始了。在方括号内,我有计数器,如果您愿意,格式为MM:SS。我一生都找不到一种方法来整理这些时间,但我需要比较这些时间,因此我想将它们存储为分和秒,而不仅仅是数字。
    • 第一个是计数器“TimePent”
    • 第二个是计数器“TimeStarted”和
    • 第三个是计数器“TimeSinceDown”
  • 然后,最后是信息文本,我通过简单地应用%{GREEDYDATA:LogInfo}尝试了它
我注意到,一小时内的分钟数可能远远高于标准的60分钟,因此我可能在这里找到了错误的树,试图用诸如TIMESTAMP_ISO8601之类的日期模式来解析它,但是,我真的不知道还有什么其他方法可以做到这一点

所以,我走了这么远:

%{NUMBER:LogLineID} %{TIMESTAMP_ISO8601:LogDate}
如前所述,我们能够(通过切掉方括号部分)用

%{GREEDYDATA:LogInfo}
要创建字段LogInfo

但那就是我被困住了。有人能帮我弄清楚剩下的吗

非常感谢


PS!我也发现了,但据我所知,只有用点而不是冒号解析时间戳。

grok regex表达式可以帮助您解决这个问题

但是首先我想确定你的意思是你想获取的三个组件是
[325:51][326:49][359:57]
?它将返回如下结果:

TimeSpent: 325:51
TimeStarted: 326:49
TimeSinceDown: 359:57
如果我明白了这一点,你可以用我的方式提出以下建议:

  • 定义您自己的自定义图案文件,并在文件中添加图案
  • 只需在logstash conf文件的filter部分使用表达式

  • 希望它能帮你解决这个问题

    但是首先我想确定你的意思是你想获取的三个组件是
    [325:51][326:49][359:57]
    ?它将返回如下结果:

    TimeSpent: 325:51
    TimeStarted: 326:49
    TimeSinceDown: 359:57
    
    如果我明白了这一点,你可以用我的方式提出以下建议:

  • 定义您自己的自定义图案文件,并在文件中添加图案
  • 只需在logstash conf文件的filter部分使用表达式

  • 希望它能帮助你

    啊,有一个空间。。事实上,在我的问题中,我误导了我自己和所有人,因为实际上并不是日志行造成了问题。我只是拿了第一个,没有意识到问题真正在哪里,但导致问题的那个在括号内有一个空格,例如:
    [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}
    
    我仍然没有解决分秒合并的问题,但是我可以在以后处理这个问题

    感谢林东对我的问题表现出兴趣,也很抱歉没有尽快回复

    如果其他人(甚至我自己)陷入同样的问题,希望这个解决方案能帮助他们


    我自己要注意:在摸索之前仔细阅读日志。:)

    啊,有一个空间。。事实上,我在我的问题中误导了我自己和所有人,因为事实上并不是日志行造成了问题。我只是选了第一行,没有意识到问题真正在哪里,但导致问题的那行在e括号:
    [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}
    
    我仍然没有解决分秒合并的问题,但是我可以在以后处理这个问题

    感谢林东对我的问题表现出兴趣,也很抱歉没有尽快回复

    如果其他人(甚至我自己)陷入同样的问题,希望这个解决方案能帮助他们

    我自己要注意的是:在开始工作之前要仔细阅读日志