Fluentd (td-agent) でレコードの値を書き換える方法

Fluentd (td-agent) でレコードの値を書き換える方法

Fluentd (td-agent) でレコードの値を書き換える必要がある場合、"record_transformer" プラグインを使います。このプラグインは td-agent3 では既にインストール済みなので(同梱されている)、特別なプラグインをインストールする必要はありません。



レコードの列値を変更する

Fluentd (td-agent) でレコードを書き換えるために、Ruby 言語を書くことが出来ます。"record_transformer" プラグインを使って "enable_ruby true" という設定を有効にします。"enable_ruby true" によって Ruby 言語の力を借りることが出来る様になるわけです。プログラム言語を使うことが出来るということはほぼなんでも出来るのではないかと思います。

以下に実際にレコードの列値を書き換える例を記載します。

<filter **>
  @type record_transformer
  enable_ruby true
  <record>
    uuid ${record['foo']}_${record['bar']}
    maybe_empty ${record["pikachu"] ? record["pikachu"] : "empty"}
  </record>
</filter>

この場合、"foo" 列値と "bar" 列値を結合(連結)し、"uuid" という新たな列値を定義しています。

また、もし "pikachu" という列の値が空(empty)だった場合、"maybe_empty" という列値が "empty" となります。もし "pikachu" 列値が空(empty)でなかった場合, "maybe_empty" 列の値は "pikachu" に入っている値になります。このように Ruby 言語を使うと高度な操作ができるようになります。