我可以有选择地禁用单个 fluentd 插件而不从配置文件中删除它们吗?

Can I selectively disable individual fluentd plugins without removing them from the configuration file?

我有一个 docker-compose 设置,容器登录到 fluentd。为了支持不同的演示环境,我将事件输出到多个目的地(ElasticSearch、Splunk、Syslog 等)

我想维护一个配置文件,但禁用不需要的输出插件。如果我有 4 个潜在的输出目的地,我将不得不维护 10 个不同的配置文件以支持所有不同的可能组合。

我知道插件可以使用环境变量作为配置参数,这很理想。但是,我没有看到底层插件架构中有一个通用的 'enabled' 或 'disable' 参数。

有没有办法从外部禁用插件?还是我必须从外部脚本动态构建我的配置文件?

我最终通过在外部指定插件类型来使用环境变量执行此操作:

<label @SPLUNK>
  <match docker.**>
    @type "#{ENV['FLUENTD_SPLUNK_PLUGIN']}"
    ...

在外部,我根据是否应启用输出设置 FLUENTD_SPLUNK_PLUGIN=splunk_hec 或 FLUENTD_SPLUNK_PLUGIN=null。到目前为止,唯一的缺点是 'null' 输出插件针对配置块中定义的参数发出了一堆警告。