【问题标题】:How to process multilines in logstash with multiple worker threads?如何使用多个工作线程处理logstash中的多行?
【发布时间】:2015-03-16 08:35:59
【问题描述】:

我想使用多个工作线程使用多个工作线程处理多行日志以提高性能,但多行过滤器不起作用: - https://github.com/elastic/logstash/pull/1591 - https://github.com/elastic/logstash/issues/1590

目前的解决方案:

显然这些都不是很好,那么有没有人对此有一个体面的解决方案?

【问题讨论】:

  • 多行过滤器的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


【解决方案1】:

另一种方法是使用 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 并将其余的发送到其他日志的?

【讨论】:

【解决方案2】:

还有另一种选择:

  1. 使用multiline 编解码器直接在输入中进行多行处理。显然,这个位将是每个输入的单线程。

  2. 然后正常使用其余的过滤器。如果提供了-w <threads>,这将是多线程的,每个过滤器工作人员。

Logstash PipelineThread Model 记录如下:

Logstash 中的线程模型目前为:

input threads | filter worker threads | output worker

【讨论】:

    【解决方案3】:

    我最终使用单独的 logstash 来处理多行。它被配置为使用一个工作线程并使用多行过滤器。如果性能仍然不行,你可以添加更多只使用一个工作线程的logstash。然后当有人修复它时,我们将删除这个额外的 logstash 实例。

    【讨论】:

      【解决方案4】:

      试试类似的,

       multiline {
              pattern => "(Stack trace:)|(^#.+)|(^\"\")|(  thrown+)|(^\s)"
              what    => "previous"
            }
      

      我将它用于 Php 致命错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-27
        • 1970-01-01
        相关资源
        最近更新 更多