Можно ли использовать переменные среды в файле конфигурации для fluentd

мне было интересно, как использовать env vars в конфигурации Fluentd, я попытался:

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

но это не работает, любая идея?

1 ответов


EDIT:

вот гораздо лучшее решение:

если вы передаете опцию "--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-reformer и fluent-plugin-forest
  2. обновите конфигурацию следующим образом.

<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 **> там. Что поймает все события и приведет к поведению, которое трудно отладить.