我想使用多个工作线程通过logstash处理多行日志以提高性能,但多行过滤器不起作用: -https://github.com/elastic/logstash/pull/1591 -https://github.com/elastic/logstash/issues/1590
目前的解决方案:
- 使用多个logstash转发器并将它们发送到不同的伐木 worker 端口(扩展性非常差:为每个具有多行的日志文件添加新的logstash转发器)
- 使用带有 Redis 输出的额外 Logstash 接收器和从 Redis 读取数据并使用一个工作线程的额外 Logstash 索引器 (https://groups.google.com/forum/#!msg/logstash-users/fUhulxmZ0Ek/HfGev7BOhCUJ)
- 作为一种黑客,我尝试在具有 lumberjack 输出的 Logstash 输出部分中进行可以具有多行的类型检查,并将它们重新发送到具有编解码器多行但不处理的同一个 Logstash 实例的不同 lumberjack 输入(不同端口)他们
- 我也可以使用rabbitMQ来读取事件,但是我应该在将多行发送到rabbitMQ之前合并多行(我应该怎么做?)
- rsyslog 也可以发送日志,但它需要特殊格式的多行日志,并且不支持正则表达式 ( https://serverfault.com/questions/622035/how-do-i-configure-rsyslog-to-deal-with-mysql-slow-query-log-multi-line-messages )
显然这些都不好,那么有没有人对此有一个不错的解决方案?
最佳答案
另一种方法是使用 log-courier 而不是logstash-forwarder。它在将其发送到logstash之前执行多行:
https://github.com/driskell/log-courier/blob/master/docs/codecs/Multiline.md
logstash-forwarder 中也有支持此功能的请求:
https://github.com/elastic/logstash-forwarder/issues/309
我很好奇,您是如何将多行日志发送到特定的单线程logstash并将其余日志发送到其他日志的?
关于regex - 如何使用多个工作线程处理logstash中的多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29072517/