Logstash混合日志解析

Logstash混合日志解析,logstash,logstash-grok,logstash-configuration,logstash-file,Logstash,Logstash Grok,Logstash Configuration,Logstash File,我通过Logstash处理日志文件,这些日志文件包含各种模式的单行消息和多行消息,我希望将多行消息作为单行消息来读取,并按原样读取单行消息 目前,我正在使用下面的Logstash配置,但这会在输出中创建重复的消息。此外,对于每一种新的多行消息模式,我需要使用自己的多行编解码器创建一个单独的输入。有没有办法将所有这些模式组合成一个输入 日志存储配置文件示例: input { #Using a single log file as input, containing multiple multi-l

我通过Logstash处理日志文件,这些日志文件包含各种模式的单行消息和多行消息,我希望将多行消息作为单行消息来读取,并按原样读取单行消息

目前,我正在使用下面的Logstash配置,但这会在输出中创建重复的消息。此外,对于每一种新的多行消息模式,我需要使用自己的多行编解码器创建一个单独的输入。有没有办法将所有这些模式组合成一个输入

日志存储配置文件示例:

input {
#Using a single log file as input, containing multiple multi-line messages (patterns) and single line messages
  file {
    codec => multiline {
          pattern => pattern1
          ....
        }
  }

  file {
    codec => multiline {
          pattern => pattern2
          ....
        }
  }

  file {
   #Single line message processing 
  }

}

filter {
#Contains filters and parsing for both multi-line and single line messages 
}

output {
#To json file
}
我想做的是:

input {
  file {
    codec => multiline {
          pattern => pattern1,pattern2,....
          ....
          }
  }
  file {
    #Single line messages input
    #May not be needed
  }
}


此外,您是否可以使用Logstash中的多行编解码器输入来处理单行消息?

多行编解码器中只能有一种模式。在同一个文件中有多个多行模式?还有,这是如何复制你的信息的?你在不同的输入中读取同一个文件吗?我通过将多行模式组合到一个编解码器中解决了这个问题。在不同的输入中读取相同的文件导致了重复,因此我修改了多行模式,使其在单个多行编解码器中工作,并解析了日志文件。