繁体   English   中英

logstash 2.3.3多行过滤器无法与多个工作人员一起使用

[英]logstash 2.3.3 multiline filter not working with multiple workers

我已经开始使用多个> 16的工人进行logstash操作。

我有多行消息,例如java异常/ java跟踪,并希望将它们合并为一个事件。 之前,它按预期工作,但是升级我的ELK堆栈后,它坏了:-(

我的logstash过滤器:

filter {
  multiline {

    pattern => "(^[a-zA-Z.]+(?:Error|Exception): .+)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*Caused by:.+)"
    what => "previous"
  }
}

logstash日志:

:message=>"Warning: Manual override - there are filters that might not work with multiple worker threads", :worker_threads=>16, :filters=>["multiline"], :level=>:warn}
Exception in pipelineworker, the pipeline stopped processing new events, please check your filter configuration and restart Logstash.

如果您已经从Logstash版本1.5升级,则可以预期。
在2.0版中引入了工作线程,但是由于多行过滤器不是线程安全的,因此它阻止使用多个工作线程。

因此,您必须:

  • 使用多行编解码器
    例如加入Java异常stacktrace:

     input { stdin { codec => multiline { pattern => "(^.+Exception: .+)|(^\\s+at .+)|(^\\s+... \\d+ more)|(^\\s*Caused by:.+)" what => "previous" } } } 
  • 在托运人上执行多行操作(可以将beaver和filebeat都配置为执行此操作)

  • 仅使用一个工作线程(在这种情况下,您可以使用Logstash的多个实例来使用所有CPU内核,但是请记住,多行过滤器最终将被删除)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM