I would like to process mulitline logs with logstash using multiple worker threads for performance but multiline filter doesn't work: - https://github.com/elastic/logstash/pull/1591 - https://github.com/elastic/logstash/issues/1590
solutions for now:
- using multiple logstash-forwarder and send them to different lumberjack port (scales very poorly: new logstash-forwarder for each logfile that has multilines)
- using an extra logstash-receiver with redis output and an extra logstash indexer that reads from redis and uses one worker thread (https://groups.google.com/forum/#!msg/logstash-users/fUhulxmZ0Ek/HfGev7BOhCUJ)
- as a hack, I tried to put a type check that can have multiline in logstash output part with lumberjack output and resending them to the same logstash instance's different lumberjack input (different port) that has codec multiline but it doesn't process them
- I could also use rabbitMQ that reads events but then I should merge multilines before they sent to rabbitMQ (How should I do that?)
- rsyslog can also send logs but it needs special format of multiline logs and doesn't work with regexp (https://serverfault.com/questions/622035/how-do-i-configure-rsyslog-to-deal-with-mysql-slow-query-log-multi-line-messages)
Clearly none of these is nice, so is there anyone who has a decent solution for this?