我已经开始与多个工人> 16。
开始logstash我有多行消息,例如Java例外/Java痕迹,并希望将它们合并为一个事件。之前,它正常工作,但是在升级我的麋鹿堆栈后,它正在破裂: - (
我的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版中,引入了工作线程,但是由于多行滤波器不是线程安全,因此可以防止使用多个工作线程。
因此,您必须要做:
-
使用Multiline编解码器。
例如,加入Java异常StackTrace:input { stdin { codec => multiline { pattern => "(^.+Exception: .+)|(^s+at .+)|(^s+... d+ more)|(^s*Caused by:.+)" what => "previous" } } }
-
在托运人上进行多行操作(可以将海狸和档案配置为进行)
- 仅使用一个工作线程(在这种情况下,您可以使用多个实例使用LogStash来使用所有CPU内核,但请记住,多行滤波器最终将被删除)。