Можно ли использовать переменные среды в файле конфигурации для 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 ответ здесь.
- установить
fluent-plugin-record-reformer
иfluent-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>
в частности, не использовать <match **>
там. Что поймает все события и приведет к поведению, которое трудно отладить.