Filebeat 可以使用多个配置文件吗?

Can Filebeat use multiple config files?

我在一台服务器上有多个应用程序 运行。我想使用 filebeat 将它们每个的日志发送到 logstash。但是,为了配置管理,我希望能够为每个应用程序分别添加配置到filebeat。

Logstash 从 conf.d 目录中读取其配置。据我了解,可以在那里添加文件,当 logstash 加载它们时它们会合并。 filebeat 有类似的功能吗?还是我坚持为每个服务器维护一个 filebeat.yml 文件?

我 运行 filebeat 和 logstash 作为 CentOS 7 上的服务,使用来自 elastic's repositories 的 yum/rpm 软件包。 Filebeat 是 1.3.1 版本,logstash 是 2.4.0 版本。

是的,Filebeat 有一个类似 conf.d 的功能,但默认情况下未启用。 Filebeat 将在声明的目录内部查找包含探矿者配置的其他 *.yml 文件。配置因 Filebeat 主要版本而异。

Filebeat 7.x:

行为与 6.x 相同,但配置选项是 filebeat.config.inputs 而不是 filebeat.config.prospectors

# /etc/filebeat/filebeat.yml
filebeat.config.inputs:
  enabled: true
  path: inputs.d/*.yml

然后为每个生成日志的应用创建单独的配置文件。

# /etc/filebeat/inputs.d/someapp.yml
- paths:
  - /var/log/someapp/stdout.log
  fields:
    app: someapp

Filebeat 6.x:

您在 filebeat.yml 文件的 filebeat.config.prospectors 部分指定了一个 path 选项。

filebeat.config.prospectors:
  enabled: true
  path: /etc/filebeat/conf.d/*.yml

/etc/filebeat/conf.d/someapp.yml

请注意,此文件包含filebeat.prospectors,就像在早期版本中那样。

- paths:
    - /var/log/someapp/stdout.log
  fields:
    app: someapp

Filebeat 1.x 和 5.x:

您使用 config_dir 选项在主 filebeat.yml 中声明目录。

filebeat:
  config_dir: /etc/filebeat/conf.d

/etc/filebeat/conf.d/someapp.yml

filebeat:
  prospectors:
    - paths:
        - /var/log/someapp/stdout.log
      fields:
        app: someapp