Logstash 如何禁用logstash-plain.log 中的“解析器映射,未找到模式”错误

Dmi*_*yev 2 elasticsearch logstash

我有两种格式的行日志。

aaa [bbb] [ccc] ddd eee
aaa [bbb] fff ggg [ccc] ddd eee
Run Code Online (Sandbox Code Playgroud)

我已成功使用下一个logstash过滤器配置来解析它们。

filter {
 dissect {
    mapping => { "message" => "%{field1} [%{field2}] [%{field3}] %{message}" }
  }
  if "_dissectfailure" in [tags] {
    dissect {
       remove_tag => [ "_dissectfailure" ]
       mapping => { "message" => "%{field1} [%{field2}] %{stuff} [%{field3}] %{message}" }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

一切按预期工作 - 没有“fff ggg”的行与第一次解剖匹配,带有“fff ggg”的行与第一次解剖不匹配 -> 得到标签“_dissectfailure”并成功与第二次解剖匹配(我看到该字段“stuff”出现在事件中并且事件没有“_dissectfailure”标签)

但logstash 在logstash-plain.log 中抱怨第一次剖析:

[2019-09-04T20:14:06,901][WARN ][org.logstash.dissect.Dissector] Dissector mapping, pattern not found {"field"=>"message", "pattern"=>"%{field1} [%{field2}] [%{field3}] %{message}", "event"=>{"input"=>{"type"=>"log"}, "@timestamp"=>2019-09-04T17:13:50.269Z, "tags"=>["beats_input_codec_plain_applied", "_dissectfailure"], "message"=>"aaa [bbb] fff ggg [ccc] ddd eee", }}

Run Code Online (Sandbox Code Playgroud)

请帮助摆脱这种毫无意义的警告,并在根本没有解剖匹配的情况下编写这样的警告?

小智 6

我知道它很旧,但对于遇到此问题的其他人来说:

    curl -XPUT 'localhost:9600/_node/logging?pretty' -H 'Content-Type:
    application/json' -d'
    {
        "logger.org.logstash.dissect.Dissector" : "ERROR"
    }
    '
Run Code Online (Sandbox Code Playgroud)