你能在配置文件中使用环境变量来获得流利吗?

时间:2014-12-01 17:22:20

标签: environment-variables fluentd

我想知道如何在Fluentd配置中使用env vars,我试过了:

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

但它不起作用,任何想法?

1 个答案:

答案 0 :(得分:13)

编辑:

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

如果您将“--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>

旧的,kludgey答案就在这里。

  1. 安装fluent-plugin-record-reformerfluent-plugin-forest
  2. 按如下方式更新您的配置。
  3. <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>

    特别是,请勿在那里使用<match **>。这将捕获所有事件,并将导致难以调试的行为。