【发布时间】:2015-03-16 08:35:59
【问题描述】:
我想使用多个工作线程使用多个工作线程处理多行日志以提高性能,但多行过滤器不起作用: - https://github.com/elastic/logstash/pull/1591 - https://github.com/elastic/logstash/issues/1590
目前的解决方案:
- 使用多个 logstash-forwarder 并将它们发送到不同的伐木工人端口(扩展性很差:每个具有多行的日志文件的新 logstash-forwarder)
- 使用带有 redis 输出的额外 logstash-receiver 和从 redis 读取并使用一个工作线程的额外 logstash 索引器 (https://groups.google.com/forum/#!msg/logstash-users/fUhulxmZ0Ek/HfGev7BOhCUJ)
- 作为一个 hack,我尝试在 logstash 输出部分与伐木工人输出进行类型检查,并将它们重新发送到具有编解码器多线但它不处理的相同 logstash 实例的不同伐木工人输入(不同端口)他们
- 我也可以使用 rabbitMQ 读取事件,但我应该在将多行发送到 rabbitMQ 之前合并多行(我应该怎么做?)
- rsyslog 也可以发送日志,但它需要特殊格式的多行日志,并且不适用于正则表达式 (https://serverfault.com/questions/622035/how-do-i-configure-rsyslog-to-deal-with-mysql-slow-query-log-multi-line-messages)
显然这些都不是很好,那么有没有人对此有一个体面的解决方案?
【问题讨论】:
-
多行过滤器的stream_identity parameter 不起作用?
-
嗨@MagnusBäck,不幸的是,多行过滤器不能与多个工作线程一起工作,所以我不能使用这个参数。我询问并估计了修复它的时间,但仍在等待回复。 (github.com/elastic/logstash/pull/1591#issuecomment-81541730)
-
你找到了正确的答案(“你不能”)。您可以考虑运行两个 logstash 索引器,一个用于多行,一个(多个工作器)用于其他所有内容。
-
感谢@AlainCollins 的建议,我在 github 网站上也得到了类似的答案:github.com/elastic/logstash/pull/1591#issuecomment-81746591
-
@BalazsVarhegyi 你找到解决方案了吗?我现在正遇到这个确切的问题。
标签: regex multithreading logstash multiline logstash-forwarder