首页 > 解决方案 > logstash 多管道决策器

问题描述

以下是我的用例,基于运行时的一些业务逻辑,我需要将从日志文件生成的事件发布到不同的弹性搜索端点。输入插件(文件名)将相同,但输出插件(弹性端点)可能会改变。我无法在每个日志行中提供运行时生成的这些数据。例如,thread1 和thread2 都在向app.log 生成日志。我想将日志从线程 1 推送到弹性端点 1,并将日志从线程 2 推送到弹性端点 2。在这种情况下,两者的输入( app.log )是相同的。这是可以实现的吗?

标签: logstashlogstash-configuration

解决方案


是的,只需if在输出中使用条件。

您将需要一个要过滤的字段,例如一个名为的字段,该字段thread将具有线程的值,thread1或者thread2,那么您需要这样的东西:

output {
    if [thread] == "thread1" {
        elasticsearch to endpoint1
    }
    if [thread] == "thread2" {
        elasticsearch to endpoint2
    }
}

推荐阅读