ククログ

株式会社クリアコード > ククログ > Fluentd v0.14 API移行のすすめ

Fluentd v0.14 API移行のすすめ

クリアコードではFluentd本体の開発だけでなくFluentdの600以上あるプラグインの開発にも参加しています1。具体的にどういうことをやっているかは過去の記事を参照してください。

FluentdのプラグインをFluentd v0.14 APIに移行するための記事がいくつかあります。

具体的な移行方法についてはそれぞれの記事で解説しましたが、肝心のFluentd v0.14 API移行のPros/Consを説明していませんでした。 この記事ではプラグイン開発者視点でFluentd v0.14 APIへの移行について扱います。既に稼働しているFluentdをv0.14へ移行することについては扱いません。

Pros

  • 洗練されたプラグインAPIを使うことでメンテナンスしやすいプラグインを開発することが可能

  • non-buffered/buffered/async な output プラグインを1つのファイルで開発できる

  • non-buffered/buffered/async な output プラグインを設定ファイルで切り替えできる

  • 便利なプラグインヘルパーによってコードの見通しがよくなる

  • 簡単に使える本物のテストドライバーによって、メンテナンスしやすいテストコードを書くことができる

  • 組み込みのマルチプロセスサポート

  • bufferのchunkの分け方を柔軟に指定できる

    • タグごとにchunkを分ける

    • 時間ごとにchunkを分ける

    • chunkに含まれる任意のレコードごとにチャンクを分ける

  • storageプラグインのAPIが追加され、プラグインの状態を管理する汎用的な機構が備わった

Cons

  • 新APIは後方互換性がないので、基本的には全部書き直しが必要

    • ただし、Fluentd v0.14には互換レイヤーがあるので、移行しなくても基本的にはそのままで動作する
  • テストコードは全面的に書き直しが必要

    • Fluentd本体ではtest-unitを使用してテストコードを書いているので本体のテストコードを見ればどう書けばよいかわかる
  • Fluentd v0.14 API に移行すると Fluentd v0.12 以前でも動くようにするのは不可能2

まとめ

Fluentd v0.14 APIに移行するPros/Consをまとめてみました。既に多くのプラグインがFluentd v0.14のAPIに移行済みです。最近は、最初からFluentd v0.14のAPIを使用している3rdパーティのプラグインも見かけるようになりました。

まだ移行していないプラグイン作者の方はtd-agent3が正式リリースされる前に、自分たちのプラグインをFluentd v0.14 APIに移行するとよいのではないでしょうか。

  1. すべてではありません

  2. Fluentd v0.10.x と Fluentd v0.12.x はプラグイン開発者が少しコードを追加することでFluentd v0.10.xとFluentd v0.12.xのどちらでも動くようにできた