我已经开始使用多个工作人员进行logstash> 16。
我有多行消息,例如java exception / java trace,并希望将它们合并到一个事件中。早些时候,它按预期工作,但在升级我的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.
答案 0 :(得分:2)
如果您已从Logstash 1.5版升级,则可以预期 在版本2.0中引入了工作线程,但由于多行过滤器不是线程安全的,因此它可以防止使用多个工作线程。
所以你必须要么:
使用multiline codec。
例如,加入java异常stacktrace:
input {
stdin {
codec => multiline {
pattern => "(^.+Exception: .+)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*Caused by:.+)"
what => "previous"
}
}
}
您的发货人上的多行操作(beaver和filebeat都可以配置为执行此操作)