A Day in the Life

fluent / fluentd のプラグインの書き方例

fluent / fluentd のプラグインの書き方例

僕はこうやって実装・テストしてます。

例えば fluent-plugin-mongo (output plugin)を UnitTest 以外で弄りたかったら適当なディレクトリを掘って Gemfile に

source "http://rubygems.org"

gem "fluentd", :git => "git://github.com/fluent/fluentd.git", :branch => "master"
gem "fluent-plugin-mongo", :path => "/home/hotchpotch/git/github/fluent-plugin-mongo" # ローカルを参照
gem "bson_ext"

を書いて fluent.conf に適当な設定を用意して

bundle
bundle update # fluentd の master branch のアップデートをしたい時は実行
bundle exec fluentd -c fluentd.conf

で fluentd を直接立ち上げてあれこれします。設定ファイルのリロードは SIGHUP を送ります

pkill -HUP -f fluentd

buffered plugin のバッファを送信するには

pkill -USR1 -f fluentd

で SIGUSR1 を送るか

# 短い間隔で送る
flush_interval 1s

とかを設定ファイルに書いておきます。

また自分ががっつりかかわってるプラグインなら実際の fluentd を起動し、インテグレーションテストで開発してます。

を参考にどうぞ。