logstash输入块中的条件语句

时间:2016-04-29 21:14:00

标签: logstash elastic-stack logstash-configuration lumberjack

我正在使用logstash和伐木工来管理我的日志。 Logstash从两种不同的文件类型中获取输入,其中一种记录多行堆栈跟踪。我知道我应该使用多行编解码器,但我不知道如何将它应用于只有一种类型的日志。这不起作用:

input {
  lumberjack {
    #some configs
    port => 9000

    if [type] == "TYPE1" { # IF STATEMENT CAUSES ERROR
      codec => multiline {}
    }
  }
}

有没有办法允许输入编解码器使用条件?

我知道我可以使用多行过滤器而不是编解码器,但多行过滤器不允许多个工作人员,我需要它们。

1 个答案:

答案 0 :(得分:1)

我怀疑答案是为不同的数据类型设置单独的输入。这样您就不需要在多行编解码器中添加任何逻辑。 例如: 将模式X之后的所有Java日志发送到端口N. 将所有遵循模式Y的Ruby日志发送到端口N + 1

我不确定如何在包含Redis或其他缓存服务器的堆栈中进行此工作,因为理想情况下所有数据都应该在没有任何处理的情况下进入缓存,但在检索时需要处理逻辑,因为它将会包含各种数据类型。

我想您需要注意加入接收层的多行日志,以便缓存服务器接收完整的消息,然后在将数据发送到Elastic Search之前运行较重的过滤器。

这样的事情:

[https @ 0x7fc351416080] inflate return value: -3, incorrect header check
Last message repeated 15 times