Y-Ken Studio

新しもの好きのデータエンジニアが四方山話をお届けします。

fluent-plugin-rewrite-tag-filter v1.2.1 をリリースしました。設定サンプルと共にプレースホルダ機能強化内容を紹介します。 #fluentd

ログ収集ツールFluentdに、Apachemod_rewriteのようにtagを自在に書き換える機能を追加する、fluent-plugin-rewrite-tag-filterのv1.2.1を先日リリースしました。

今回は、プレースホルダの機能改善を行いました。
こちらは m.yuzuki (@ephemeralsnow)さんによる提案です。ありがとうございます。

v1.2.1の新機能紹介

hostname_commandというオプションを追加しました。
これは、書き換え後のタグに使えるプレースホルダである${hostname}
__HOSTNAME__の中身を任意のコマンドで置き換えることの出来るオプションです。

このオプションの利用有無での動作の違いを、設定例と共に紹介します。
ホスト名がapp145.foo.comのマシンで実行した場合を想定して見ていきましょう。

設定例1

access.example.app145.foo.comというタグに書き換わります。
続く後処理によっては末尾の.foo.comが余計になることもあります。

<match example1.access>
  type rewrite_tag_filter
  rewriterule1 domain (example).com access.$1.${hostname}
</match>

設定例2

access.example.app145というタグに書き換わります。
タグの区切りにも用いるドット(.)とホスト名が混じる事象が解決しますね。

<match example2.access>
  type rewrite_tag_filter
  rewriterule1 domain (example).com access.$1.${hostname}
  hostname_command hostname -s
</match>

まとめ

ホスト名のプレースホルダには完全修飾ドメイン名(FQDN)をデフォルトで利用しています。
もし短縮表記のホスト名をプレースホルダに利用したい場合には、hostname_command hostname -sと設定しましょう。 これはFluentd起動時に実行して変数に格納するため、多少重たい任意のコマンドを指定しても稼働中のパフォーマンスに影響は出ませんのでご安心ください。

お知らせ

近日リリース予定の v1.3.0では、除外指定のサポートを強化します。 正規表現でマッチ「しない」もののタグを書き換えたいパターンにも対応出来ます。 楽しみですね。