【问题标题】:Grok Pattern for multiline is not working多行的 Grok 模式不起作用
【发布时间】:2018-12-21 09:12:21
【问题描述】:
 第一| 2nd|3rd |4th |5th |6th |7th |8th |2012.07.12 05:31:04 |10th |ProductDir: C:\samplefiles\test\storage\4.0 (LF)
C:\samplefiles\test\storage\5.0 (LF)
样品目录:(LF)

注意:LF -> 换行正在追加

我尝试了以下选项.. 似乎没有任何效果

  1. match => [ "message", "(?m)....
  2. (?<message>(.|\r|\n)*)
  3. Greedydata 也无法正常工作,因为它没有考虑新行。
  4. mutate {gsub => ["message", "\n", "LINE_BREAK"] }
  5. codec => multiline { pattern => "^\s" negate => true what => previous }

【问题讨论】:

  • 您可以添加您使用的 Elasticsearch 和 Logstash 版本吗?
  • ELK 版本为 6.3

标签: elasticsearch logstash elastic-stack logstash-grok


【解决方案1】:

(?m)%{GREEDYDATA} 将匹配任何多行日志,包括您的。 请测试一下here

【讨论】:

  • 我试过这个,但它不起作用。我认为换行可能是个问题
  • 它有效,当您将日志复制/粘贴到 grok 调试器网站时,请确保模式后没有新行。
  • 我的日志中有(LF),当最后一列数据超过限制时会出现
  • 我的意思是,从调试器网站从模式中删除 LF,而不是从日志中。
  • 在调试器网站中,它工作正常,但是当我在本地系统中运行 logstash 时,它会导致问题。即使使用此 (?(.|\r|\n)*),它也可以在网站中使用,但不适用于 logstash 6.3.0v
【解决方案2】:

下面的对我有用。

codec => multiline{
    pattern => "^\s*\d{1,}\|"
    negate => "true"
    what => "previous"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    相关资源
    最近更新 更多