Java logstash 2.3.3多行过滤器不与多个工作人员一起工作
我已经开始与超过16名的多个工人进行日志存储 我有多行消息,比如java异常/java跟踪,希望将它们合并到一个事件中。早些时候,它按预期工作,但在升级我的麋鹿堆栈后,它正在崩溃:-( 我的日志存储过滤器:Java logstash 2.3.3多行过滤器不与多个工作人员一起工作,java,logstash,jruby,elastic-stack,Java,Logstash,Jruby,Elastic Stack,我已经开始与超过16名的多个工人进行日志存储 我有多行消息,比如java异常/java跟踪,希望将它们合并到一个事件中。早些时候,它按预期工作,但在升级我的麋鹿堆栈后,它正在崩溃:-( 我的日志存储过滤器: filter { multiline { pattern => "(^[a-zA-Z.]+(?:Error|Exception): .+)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*Caused by:.+)" what =>
filter {
multiline {
pattern => "(^[a-zA-Z.]+(?:Error|Exception): .+)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*Caused by:.+)"
what => "previous"
}
}
日志存储日志:
: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内核,但请记住,多行筛选器最终将被删除)