子供のプラグインの設定をgracefulに再読み込みする #fluentd のアウトプットプラグインをリリースしました
fluent-plugin-config_reloaderという名前で作ってみまてます。 昨日のエントリーに書いたものから実用的になるように考えを進めてます。
- 設定ファイルの再読み込みだけに特化した
- シグナルをやめて、指定したパスにファイルをtouchすると再読み込みを行うようにした
コード
bash0C7/fluent-plugin-config_reloader · GitHub
インストール
Gemfileに下記を追記するか、
gem 'fluent-plugin-config_reloader'
直接突っ込むかしてください。
gem install fluent-plugin-config_reloader
設定
type config_reloader config_file child.conf reload_file reload.txt reload_file_watch_interval 5
- config_file: 子供の設定ファイルのパス
- reload_file: 再読み込みの契機となるファイルのパス
- reload_file_watch_interval(optional): 再読み込みの契機となるファイルをウォッチする間隔を秒数で指定。デフォルトは1。
子供の設定ファイルの書き方
<store>
ディレクティブを一つとります。copyプラグインを指定する場合は、こんな感じなネストになります。
<store> type copy <store> type stdout </store> <store> type null </store> </store>
再読み込みをさせる方法
指定した再読み込みの契機となるファイルをtouchしてください。 再読み込みが走るとログにその旨がでます。
2014-05-06 18:01:55 +0900 example: {"uri":"http://example.com"} 2014-05-06 18:01:56 +0900 [warn]: config_reloader: reload config file start 2014-05-06 18:01:56 +0900 [warn]: config_reloader: reload config file end 2014-05-06 18:01:56 +0900 example: {"uri":"http://example.com"}
まだ残っているもの
- テストの充実
- 子供の設定ファイルがおかしいときのエラー出力
謝辞
fluent-plugin-restart-plugin,誰か作るんだ!プラグインidを指定して再起動する方法 or 内部にプラグインを内包してそれを書き換える方法,どっちでもそれなりに動く気がする
— Mr. Fiber (@repeatedly) 2014, 5月 4
ここまで書いてみてようやく@repeatedly先生の話がわかってきました。これ、後者の実装やったんや…