ククログ

株式会社クリアコード > ククログ > Fluentd v1.18.0をリリース

Fluentd v1.18.0をリリース

こんにちは。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 falseinsecure trueを設定する必要がありました。 これは不適切な設定の組み合わせでした。

今回のリリースでは、client_cert_auth falseのみでSSL_VERIFY_NONEを適用できるようになりました。 なお、client_cert_auth falseはデフォルト設定です。

transport設定(tls): FIPSモードを保証するensure_fipsオプションを追加

実行環境のOpenSSLがFIPSモードで動作していることをチェックするために、設定ファイルのtransportセクションにensure_fipsオプションを追加しました。 ensure_fipstrueに設定すると、OpenSSLがFIPSモードで動作していない場合にエラーを発生させます。デフォルトでは無効になっています。

例:

<transport tls>
  ensure_fips true
</transport>

transport設定: receive_buffer_sizeオプションを追加

これまでin_udpプラグインでのみ利用可能だったreceive_buffer_sizeオプションをtransportセクションにも追加しました。 これにより、in_tcpin_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も用意しておりますので、困ったことがあればぜひ質問をお寄せください。