Я хотел бы обрабатывать многострочные журналы с помощью logstash, используя несколько рабочих потоков для повышения производительности, но многострочный фильтр не работает: - https://github.com/elastic/logstash/pull/1591 - https://github.com/elastic/logstash/issues/1590
решения на данный момент:
- использование нескольких logstash-forwarder и отправка их на другой порт лесорубов (очень плохо масштабируется: новый logstash-forwarder для каждого файла журнала с многострочными строками)
- используя дополнительный приемник logstash с выводом redis и дополнительный индексатор logstash, который читает из redis и использует один рабочий поток (https://groups.google.com/forum/#!msg/logstash-users/fUhulxmZ0Ek/HfGev7BOhCUJ)
- в качестве хака я попытался поставить проверку типа, которая может иметь многострочную часть вывода logstash с выводом дровосека и повторно отправить их на другой вход дровосека одного и того же экземпляра logstash (другой порт), который имеет многострочный кодек, но он их не обрабатывает
- Я также мог бы использовать rabbitMQ, который считывает события, но тогда я должен объединить многострочные сообщения, прежде чем они будут отправлены в rabbitMQ (как мне это сделать?)
- rsyslog также может отправлять журналы, но для этого требуется специальный формат многострочных журналов, и он не работает с регулярными выражениями (https://serverfault.com/questions/622035/how-do-i-configure-rsyslog-to-сделка-с-mysql-медленный-запрос-журнал-многострочные-сообщения)
Очевидно, что ни один из них не хорош, так что есть ли у кого-нибудь достойное решение для этого?