EC2(Amazon Linux 2023) に Fluent Bit を導入してS3バケットにログを配信
こんにちは、こーへいです。
今回はEC2(Amazon Linux 2023) に Fluent Bit を導入してS3バケットにログを配信してみました。
Fluentd版は以下となります。
FluentdとFluent Bitは似ているツールですがAWSのドキュメントでは以下の記載があり、AWSとしてはFluent Bitのインストールを推奨しております。
ECSでもFluent Bitを利用することが多いため、特別な要件がなければFluentdではなくFluent Bitで統一することをお勧めします。
AWS は、CloudWatch Logs と Firehose の両方のプラグインに Fluent Bit イメージを提供します。Fluent Bit は、リソース使用率が Fluentd よりも低いため、ログルーターとして使用することをお勧めします。
Fluent Bitの公式ドキュメントでもFluentdの違いを解説しています。
前提
- Amazon Linux 2023を使用
- S3バケットやEC2の準備は実施済み
Fluent bitの導入
インストール
// インストール スクリプト curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh // サービスの起動 sudo systemctl start fluent-bit インストールはすぐに終わります。

Configの修正
/etc/fluent-bit/fluent-bit.confのデフォルトのファイルを書き換え以下の設定ファイルを作成しました。
[INPUT] Name tail Path /var/log/httpd/access_log Tag s3.apache.access db apache_access_tail.db [OUTPUT] name s3 match s3.apache.access region ap-northeast-1 bucket [バケット名] total_file_size 100M upload_timeout 10m use_put_object On compression gzip s3_key_format /$TAG/%Y/%m/%d/%H/%M/%S/$UUID.gz Inputセクション
各パラメータ等の詳細は上記リンクに記載されています。
個人的にdbは設定を推奨します。こちらはFluentdにおけるpos_fileと同様のパラメータでFluent Bitが最後に読み込んだログを記録するための設定です(Fluentdでは設定を強く推奨しています)。
こちらを設定することで、ログの取りこぼしや重複リスクを減らすことが可能です。
Outputセクション
各パラメータ等の詳細は上記リンクに記載されています。
upload_timeoutの上限値はドキュメントに記載がありませんでした。1時間までは少なくとも設定可能ですので、アプリケーションの特性を考慮し最適な設定を行なってください。
確認
下記コマンドを実施し、設定ファイルを更新後、起動したapacheに対してリクエストを送信します。
sudo systemctl restart fluent-bit sudo dnf install httpd sudo systemctl start httpd.service ab -n 100 -c 10 http://localhost/ 10分ほど待機した後S3を確認するとs3_key_formatで指定した通りにログファイルが配信されていました。

中身もしっかりアクセスログが記録されています。







