id:bash0C7の進捗 過去アーカイブ[〜2019-02-23]

最新情報は https://www.pixiv.net/fanbox/creator/3780274 にて

子供のプラグインの設定を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"}

まだ残っているもの

  • テストの充実
  • 子供の設定ファイルがおかしいときのエラー出力

謝辞

ここまで書いてみてようやく@repeatedly先生の話がわかってきました。これ、後者の実装やったんや…