【问题标题】:logstash conditional statement in input block输入块中的logstash条件语句
【发布时间】:2016-04-29 21:13:59
【问题描述】:

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

input {
  lumberjack {
    #some configs
    port => 9000

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

有没有办法让输入编解码器与条件一起工作?

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

【问题讨论】:

    标签: logstash elastic-stack logstash-configuration logstash-forwarder


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-13
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多