logstash - 同时加载单行日志和多行日志

logstash - loading a single-line log and multi-line log at the same time

我正在将两个日志文件中的数据加载到 elasticsearch。我的 logstash 的第一行-file.conf:

input {
    file {
        path => ["/LOGS/BBC/current_log.log",
            "/LOGS/CSI/current_log.log"]
        start_position => "beginning"
}

First ("/LOGS/BBC/current_log.log") 是单行文件,在没有错误的情况下加载到弹性文件中。第二个 ("/LOGS/CSI/current_log.log") 是多行的。我想使用多行编解码器插件,但我不明白 - 如何在输入部分将单行文件与多行文件分开。

您说得对,每个输入只能应用 一个 编解码器选项。也就是说,没有什么能阻止您定义多个输入插件。因此,您可以为单行文件指定一个输入插件,为多行文件指定另一个输入插件,如下所示:

logstash.conf:

input {
  file {
    path => ["/LOGS/BBC/current_log.log"]
    start_position => "beginning"
}

input {
  file {
    path => ["/LOGS/CSI/current_log.log"]
    start_position => "beginning"
    codec => "multiline"
}

filter{
  ...
}

output{
  ...
}

请注意,如果其中一个输入插件失败,整个管道都会被阻塞。因此,您可能想考虑通过定义多个管道来分离您的管道。看看这个 documentation 关于实现多个管道的内容。