Logstash 日志正在忽略配置文件中的输入部分

Logstash 日志正在忽略配置文件中的输入部分,logstash,elastic-stack,logstash-configuration,Logstash,Elastic Stack,Logstash Configuration,我有一个通过HTTP和TCP捕获日志的简单设置。 我在/etc/logstash/conf.d/(见下文)创建了2个conf文件,但通过HTTP发送的日志也通过TCP管道传递,反之亦然。例如,当我通过TCP发送日志时,它会在http logger-*索引和TCP logger-*中结束。。这对我来说毫无意义:( http_logger.conf input { http { port => 9884 } } filter { grok { match =

我有一个通过HTTP和TCP捕获日志的简单设置。 我在
/etc/logstash/conf.d/
(见下文)创建了2个conf文件,但通过HTTP发送的日志也通过TCP管道传递,反之亦然。例如,当我通过TCP发送日志时,它会在
http logger-*
索引和
TCP logger-*
中结束。。这对我来说毫无意义:(

http_logger.conf

input {
  http {
    port => 9884
  }
}
filter {
    grok {
      match => ["[headers][request_path]", "\/(?<component>[\w-]*)(?:\/)?(?<env>[\w-]*)(?:\/)?"]
    }
}
output {
    amazon_es {
        hosts => ['XXXXX']
        region => 'us-west-2'
        aws_access_key_id => 'XXXXX'
        aws_secret_access_key => 'XXXXX'
        index => 'http-logger-%{+YYYY.MM.dd}'
    }
    stdout { codec => rubydebug }
}
input {
  tcp {
    port => 9885
    codec => json
  }
}
filter {

}
output {
    amazon_es {
        hosts => ['XXXXX']
        region => 'us-west-2'
        aws_access_key_id => 'XXXXX'
        aws_secret_access_key => 'XXXXX'
        index => 'tcp-logger-%{+YYYY.MM.dd}'
    }
    stdout { codec => rubydebug }
}
你知道我遗漏了什么吗?
谢谢

输入、筛选和输出配置,即使在不同的文件中拆分,日志存储在处理时也会将其作为单个大配置进行处理,就像在单个文件中指定了所有输入、筛选和输出一样

所以说,进入logstash的事件将通过所有配置的输出和过滤插件,在您的情况下,TCP和HTTP输入插件拾取的每个事件都将通过在HTTP_logger.conf和TCP_logger.conf中配置的过滤插件和输出插件,这就是您在
ht中看到隐藏事件的原因tp记录器-*
tcp记录器-*
索引

因此,为了解决这个问题,我们可以为
tcp
http
输入插件选择的事件指定一个唯一的类型字段,然后使用输入插件中设置的类型选择性地应用过滤器和输出插件,如下所示

http_logger.conf
@Ram提供的解释是正确的,但是有一种更干净的方法来解决这个问题:enter

默认情况下,它如下所示:

- pipeline.id: main
  path.config: "/etc/logstash/conf.d/*.conf"
基本上,它加载并合并所有*.conf文件——在我的例子中,我有两个

要解决此问题,只需按如下方式分离管道:

- pipeline.id: httplogger
  path.config: "/etc/logstash/conf.d/http_logger.conf"
- pipeline.id: tcplogger
  path.config: "/etc/logstash/conf.d/tcp_logger.conf"
管道现在分别运行:)

注意,在这里进行任何更改后,不要忘记重新加载日志存储

- pipeline.id: main
  path.config: "/etc/logstash/conf.d/*.conf"
- pipeline.id: httplogger
  path.config: "/etc/logstash/conf.d/http_logger.conf"
- pipeline.id: tcplogger
  path.config: "/etc/logstash/conf.d/tcp_logger.conf"