11

Fluentd 構成で環境変数を使用する方法を考えていたので、試してみました。

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

しかし、うまくいきません。

4

1 に答える 1

20

編集:

これははるかに良い解決策です:

「--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>

古い、くだらない答えはここにあります。

  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 **>そこでは使用しないでください。これにより、すべてのイベントがキャッチされ、デバッグが困難な動作が発生します。

于 2014-12-02T23:08:11.813 に答える