首页 文章

logstash输入块中的条件语句

提问于
浏览
0

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

input {
  lumberjack {
    #some configs
    port => 9000

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

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

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

1 回答

  • 1

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

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

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

    像这样的东西:

    LS1 (multiple inputs and codecs like multiline)
    Redis (caching)
    LS2 (filters)
    ES (storage)
    KIB (viewing)
    

相关问题