2022年2月9日にFluentdの最新版となるv1.14.5をリリースしました。
クリアコードはFluentdの開発に参加し、リリースを含めたメンテナンス作業を行っています。
今回はv1.14.5のリリースについて、主なポイントを紹介します。
Fluentd v1.14.5の最新動向
in_http
"application/x-ndjson"のContent-Typeに対応しました
Content-Typeがapplication/x-ndjson
のデータは、ndjson1と呼ばれる形式で構成されます。
まだ統一された仕様ではないようですが、基本的には改行区切り(\n
区切り)でJSONオブジェクトが並ぶデータと考えて問題ありません2。
例えば以下のようなデータです。
{"foo": "bar"}
{"buz": "hoge"}
JSONを配列で送る場合と比べ、配列の終了を待たずに1オブジェクトずつ受信できるため、ストリーミングによく用いられる形式です。
以前からout_http
プラグインでは、JSONはデフォルトで3このndjson
として処理されていました。
今回in_http
プラグインにおいてもこの形式を受信できるようになりました。
特に設定は必要なく、Content-Typeが"application/x-ndjson"であれば自動で処理を行ってくれます。
out_forward
TLSによる転送時に、通信が正常にタイムアウトしないことのある問題を修正しました
out_forward
プラグインにおいては、予期せぬ障害発生時に通信がハングアップするのを防ぐため、connect_timeout
を設定することができます4。
しかし、TLSによる転送を行う5場合に、connect_timeout
を設定してもタイムアウトせず、通信がハングアップする現象が報告されていました。
今回のバージョンで、TLSによる転送時のタイムアウトの判定処理が見直され、connect_timeout
が確実に反映され、ハングアップを防止できるようになりました。
RubyInstaller 3.1に対応しました
Windows向けのRubyインストーラーとして、RubyInstallerがあります。
2021年12月31日にRubyInstallerの新しいバージョン3.1.0-1がリリースされ6、CランタイムがUCRTへ変わり、Rubyのプラットフォームもx64-mingw-ucrtへ変わりました。
Fluentdもこの環境向けのバイナリを提供する必要があり、本リリースから対応するようになりました7。
その他
retry_max_times
が0
に設定されている場合、1度リトライが発生してしまう問題を修正しました。- RubyInstaller 3.1に対応するため、依存gemであるServerEngineの必要バージョンをv2.2.5以降に引き上げました。
- ログに不正な文字が含まれていた場合の処理が改善しました。 詳細はIssue#3595を参照ください。
まとめ
今回の記事では、Fluentd v1.14.5について最新情報をお届けしました。
最新版を使ってみて、何か気になる点があればぜひGitHubで開発チームまでフィードバックをお寄せください!
-
newline delimited JSON
の略です。 ↩ -
\r\n
も、\n
区切りと考えて問題なく扱うことができます。 ↩ -
json_array
設定をtrue
に設定しなければ、ndjson
形式になります: https://docs.fluentd.org/output/http#json_array ↩ -
https://docs.fluentd.org/output/forward#how-to-connect-to-a-tls-ssl-enabled-server ↩
-
https://rubyinstaller.org/2021/12/31/rubyinstaller-3.1.0-1-released.html ↩
-
Fluentd v1.14.4も対応していますが、それより前のバージョンでは、Windowsに必要な依存gemがインストールされないという問題が発生します。 ↩