您可以在配置文件中使用 fluentd 的环境变量吗

Posted

技术标签:

【中文标题】您可以在配置文件中使用 fluentd 的环境变量吗【英文标题】:Can you use environment variables in config file for fluentd 【发布时间】:2015-01-29 18:36:29 【问题描述】:

我想知道如何在 Fluentd 配置中使用环境变量,我试过了:

<match **>
type elasticsearch
logstash_format true
logstash_prefix $ENV_VAR
host ***
port ***
include_tag_key true
tag_key _key
</match>

但它不起作用,你知道吗?

【问题讨论】:

【参考方案1】:

编辑:

这是一个更好的解决方案:

如果您将“--use-v1-config”选项传递给 Fluentd,则可以使用“#ENV['env_var_name']”,如下所示:

<match foobar.**> # ENV["FOO"] is foobar
  type elasticsearch
  logstash_prefix "#ENV['FOO']"
  logstash_format true
  include_tag_key true
  tag_key _key
  host ****
  port ****
</match>

旧的、笨拙的答案就在这里。

    安装fluent-plugin-record-reformerfluent-plugin-forest 如下更新您的配置。

<match hello.world>
  type record_reformer
  tag $ENV["FOO"].$tag_prefix[-1] # adding the env variable as a tag prefix
</match>

<match foobar.**> # ENV["FOO"] is foobar
  type forest
  subtype elasticsearch
  <template>
    logstash_prefix $tag_parts[0]
    logstash_format true
    include_tag_key true
    tag_key _key
    host ****
    port ****
  </template>
</match>

特别是,不要在那里使用&lt;match **&gt;。这将捕获所有事件并导致难以调试的行为。

【讨论】:

来自groups.google.com/forum/#!topic/fluentd/z-1vIsQ4kHU,您需要在/etc/default/td-agent 中保留--use-v1-config 的环境变量,如下所示:export FOO="foobar" /etc/default/td-agent 适用于 debian 系列。对于 redhat 系列,请改用 /etc/sysconfig/td-agent。 --use-v1-config 现在是默认设置,因此您不必手动指定。 今天发现了这个。 Fluentd FAQ 并搜索“如何使用环境变量”

以上是关于您可以在配置文件中使用 fluentd 的环境变量吗的主要内容,如果未能解决你的问题,请参考以下文章

在 fluentd 中使用具有不同匹配类型的单个源

在没有弹性搜索的情况下在 openshift 上安装 fluentd?

SpringBoot配置文件加载顺序

windows下fluentd传输日志到elasticsearch (fluentd elasticsearch https)

有没有办法在Visual Studio Code中设置环境变量?

使用Fluentd进行日志记录 - 为什么json日志文件的输出显示为textpayload(而不是jsonpayload)?