oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

#fluentd Fluentd v11 設計案が出たので、直接では無いけど今使っていて改善を希望している所を書いてみる。

Fluentd v11 設計案が先日リリースされました!
主要なトピックは実現されると嬉しい(特にin_fowardの性能周り)ので、それに付随する小さな希望を書いてみます。ちゃんと理解出来ていなくてかぶっていたり、既にその機能あるぞ!の場合はごめんなさい><

config設定に環境変数を使いたい

タグとかに$HOSTNAMEとか書けると嬉しい。
今はhttp://d.hatena.ne.jp/oranie/20120313/1331565811とかでやっているけど、これを書けるとタグとかで最終的にユニークな文字列(今はIPアドレスとか後ろに付けている)を付与したい時に助かる。

fluentd自体のログのタグ操作

上に関連するんだけど、今はfluentd自体が出すログ(タグ:fluent.**の奴)が設定で弄れない(はず)。その為、このログを集約してもどのサーバが出したログか判別が付かないので、ちょっと面倒臭い。

fluentd自体のエラーログでエラーを出したプラグイン名を付与して欲しい。

2012-05-10 16:12:06 +0900: emit transaction failed  error="closed stream"
  2012-05-10 16:12:06 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.22/lib/fluent/plugin/buf_file.rb:31:in `write'
  2012-05-10 16:12:06 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.22/lib/fluent/plugin/buf_file.rb:31:in `<<'
  2012-05-10 16:12:06 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.22/lib/fluent/buffer.rb:168:in `block in emit'
  2012-05-10 16:12:06 +0900: /usr/lib64/fluent/ruby/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
  2012-05-10 16:12:06 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.22/lib/fluent/buffer.rb:163:in `emit'
  2012-05-10 16:12:06 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.22/lib/fluent/output.rb:517:in `block in emit'
  2012-05-10 16:12:06 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.22/lib/fluent/event.rb:52:in `call'
  2012-05-10 16:12:06 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.22/lib/fluent/event.rb:52:in `each'

こんな感じでrubyが出した例外をそのまま出力されているけど、

2012-05-10 16:12:06 +0900: emit transaction failed  error="closed stream"

ここにプラグイン名が付いているとどこが問題なのか切り分けがしやすいので助かると思う。例えばこんな感じ?

2012-05-10 16:12:06 +0900: ["plugin":"in_forwad"] emit transaction failed  error="closed stream"

ログの量が多いとgrep -v ruby ./td-agent.logで一回どれだけ出たかを見てそれから多く出ているログの詳細を見てどのプラグインなのかな?とかやっているので。

in_tailでpath ディレクティブに複数ファイルの記述が可能になると嬉しい。

同じフォーマットなんだけど複数ファイルに書かれている場合、同じ設定でファイルパスだけ分けた設定を複数書くので、複数ファイル記述や正規表現での記述が出来ると捗る。
例で言うとappログが

/var/log/td-agent/tmp/app_log_sym0
/var/log/td-agent/tmp/app_log_sym1
/var/log/td-agent/tmp/app_log_sym2

みたいな感じで同じフォーマットで複数のファイルがある場合。


とりあえず勝手にバーっと思いついたのを書いてみました><