regex - 如何使用多个工作线程处理logstash中的多行?

标签 regex multithreading logstash multiline logstash-forwarder

我想使用多个工作线程通过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/

相关文章:

C++、正则表达式

c - 线程在pthread_create之后立即执行?

elasticsearch - 在Logstash中禁用索引轮换

elasticsearch - Elastic Beats-更改Beats文档中默认字段的字段类型?

regex - 在前两个冒号上拆分字符串

regex - htaccess,使用正则表达式 : Folder to variable 重定向

java - 从类似正则表达式的描述符创建数字范围

java - Atomic Integer incrementAndGet() 线程安全吗?

multithreading - valgrind 在多线程套接字程序中停滞

regex - 多行的正则表达式模式是什么(logstash)