こんにちは。Fluentdチームの藤田です。
2024年11月29日にFluentd v1.18.0をリリースしました。 本リリースではゼロ・ダウンタイムによるリスタートを主な機能として追加しました。 また、いくつかの機能拡張と不具合の修正が含まれます。
本記事ではFluentd v1.18.0の変更内容について紹介します。
新機能
ゼロ・ダウンタイムによるリスタート機能を追加
LnuxおよびmacOS環境下で実行中のFluentdをゼロ・ダウンタイムで更新可能にする機能を追加しました(Windows環境は未対応)。 この機能により、設定ファイルの再読み込みやFluentdの再起動をゼロ・ダウンタイムで安全に実行できます。
この機能は、FluentdのSupervisorプロセスに対してSIGUSR2シグナルを送信することで利用できます。 従来はSupervisorプロセスにSIGUSR2シグナルを発火すると設定ファイルの再読み込みする機能が実行されていましたが、 本リリースでゼロ・ダウンタイムによるリスタート機能に置き換わりました(LinuxおよびmacOS環境限定)。
従来の設定ファイルの再読み込み機能はいくつかの制限や問題がありました。 詳細は#4624を参照ください。 なお、従来の機能も引き続き各WorkerプロセスにSIGUSR2シグナルを送信することで利用可能ですが、 特別な理由がない限り、ゼロ・ダウンタイムのリスタート機能を推奨します。
機能改善
設定ファイル: 組み込みRubyコードがHashやArrayの内部でも利用可能に変更
設定ファイル内で利用できる組み込みのRubyコードが拡張され、本リリースではHashやArray記法内でも使用できるようになりました。
例:
key1 ["foo","#{1 + 1}"] # Array記法内で組み込みRubyコードを使用
key2 {"foo":"#{1 + 1}"} # Hash記法内で組み込みRubyコードを使用
結果:
key1 ["foo","2"]
key2 {"foo":"2"}
既存の設定ファイルに影響はないものと考えておりますが、この変更には互換性がない点にご注意ください。 意図せずに動作が変わる場合は、値全体をシングルクォートで囲むことでこの機能を無効化できます。
例:
key '{"foo":"#{1 + 1}"}'
transport設定(tls): デフォルトの挙動をSSL_VERIFY_NONE
に変更
サーバ証明書の検証におけるデフォルト設定をSSL_VERIFY_NONE
に変更しました。
以前のバージョンでは、SSL_VERIFY_NONE
を適用するには、client_cert_auth false
とinsecure true
を設定する必要がありました。
これは不適切な設定の組み合わせでした。
今回のリリースでは、client_cert_auth false
のみでSSL_VERIFY_NONE
を適用できるようになりました。
なお、client_cert_auth false
はデフォルト設定です。
transport設定(tls): FIPSモードを保証するensure_fips
オプションを追加
実行環境のOpenSSLがFIPSモードで動作していることをチェックするために、設定ファイルのtransport
セクションにensure_fips
オプションを追加しました。
ensure_fips
をtrue
に設定すると、OpenSSLがFIPSモードで動作していない場合にエラーを発生させます。デフォルトでは無効になっています。
例:
<transport tls>
ensure_fips true
</transport>
transport設定: receive_buffer_size
オプションを追加
これまでin_udp
プラグインでのみ利用可能だったreceive_buffer_size
オプションをtransport
セクションにも追加しました。
これにより、in_tcp
やin_syslog
プラグインでもreceive_buffer_size
オプションが利用可能になりました。
例:
<transport udp>
receive_buffer_size 4194304
</transport>
filter_parser: 1レコードが複数レコードにパースされるケースに対応
Fluentd v1.17.xでは、parseした結果が複数レコードとなる場合に最初のレコードしか扱えないという制限がありました。 今回のリリースではこの制限を取り除き、複数レコードを適切に扱えるようにしました。
制限の内容については、通常版Fluent Package v5.1.0をリリース の 「一部のParserプラグインが意図とは異なるデータを返却することがある問題を修正」の項目をご覧ください。
in_http: tagにプレフィックスをセットするadd_tag_prefix
オプションを追加
in_http
プラグインにadd_tag_prefix
オプションを追加し、受信イベントのタグにプレフィックスを追加できるようにしました。
このオプションはin_forward
プラグインにも存在しており、本リリースでin_http
プラグインでも同様の機能を利用できるようになりました。
例:
<source>
@type http
add_tag_prefix prod
</source>
system設定: ログファイルパスを設定するpathオプションを追加
system設定のlog
セクションにpath
オプションを追加し、ログファイルのパスを設定できるようにしました。
例:
<system>
<log>
path /path/to/log_file
</log>
</system>
不具合修正
Windows: --daemonコマンドラインオプションがエラーになる問題を修正
Windows環境でfluend
を起動する際に--daemon
オプションを指定するとエラーが発生する問題を修正しました。
--pluginコマンドラインオプションがデフォルト値を上書きしないように修正
fluend
を起動する際に--plugin
オプションを指定するとデフォルト値が上書きされる問題を修正しました。
まとめ
今回は、Fluentd v1.18.0のリリース情報をお届けしました。
クリアコードはFluentdのサポートサービスを行っています。 詳しくはFluentdのサポートサービスをご覧いただき、お問い合わせフォームよりお気軽にお問い合わせください。
最新版を使ってみて何か気になる点があれば、ぜひGitHubでコミュニティーにフィードバックをお寄せください。 また、日本語用Q&Aも用意しておりますので、困ったことがあればぜひ質問をお寄せください。