Amazon Linux 2023 のシステムログを Fluent Bit で S3 に転送してみた

Amazon Linux 2023 のシステムログを Fluent Bit で S3 に転送してみた

Fluent Bit の設定から AMI 作成、Auto Scaling 環境での設定手順をご紹介します。
2026.09.17

はじめに

Fluent Bit を用いて、Amazon Linux 2023 のシステムログを S3 バケットへ転送する方法を検証しました。

https://dev.classmethod.jp/articles/ec2-amazon-linux-2023-fluent-bit-s3/

事前準備

S3 バケット

ログ転送先の S3 バケットを用意します。

IAM ロール

EC2 インスタンスプロファイル用の IAM ロールを作成します。ポリシーは Fluent Bit のドキュメントを参考にします。

https://docs.fluentbit.io/manual/data-pipeline/outputs/s3#permissions

iam-policy.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:PutObject"],
      "Resource": "arn:aws:s3:::sample-bucket/*"
    }
  ]
}

AMI 作成用インスタンスでの作業

事前準備で作成した IAM ロールを指定して EC2 インスタンスを起動し、公式ドキュメントの手順に従って Fluent Bit をインストールします。

https://docs.fluentbit.io/manual/installation/downloads/linux/amazon-linux#amazon-linux-2023

1. リポジトリの登録

Fluent Bit は公式の yum/dnf リポジトリを通じて提供されています。
リポジトリの参照設定を追加するため、/etc/yum.repos.d/fluent-bit.repo を新規作成します。

sudo vi /etc/yum.repos.d/fluent-bit.repo

作成したファイルに、以下のリポジトリ設定を記述します。

/etc/yum.repos.d/fluent-bit.repo
[fluent-bit]
name = Fluent Bit
baseurl = https://packages.fluentbit.io/amazonlinux/2023/
gpgcheck=1
gpgkey=https://packages.fluentbit.io/fluentbit.key
enabled=1

2. インストール

sudo yum install fluent-bit

3. 設定ファイルの編集

sudo vi /etc/fluent-bit/fluent-bit.conf

デフォルトの [INPUT] / [OUTPUT] セクションを削除し、以下の内容に置き換えます。

/etc/fluent-bit/fluent-bit.conf
[INPUT]
    Name    systemd
    Tag     host.*
    Path    /var/log/journal

[OUTPUT]
    Name            s3
    Match           *
    region          ap-northeast-1
    bucket          sample-bucket
    total_file_size 100M
    upload_timeout  60s
    s3_key_format   /logs/${EC2_INSTANCE_ID}/%Y/%m/%d/%H_%M_%S-$UUID.json

4. サービスの起動と自動起動の有効化

sudo systemctl start fluent-bit
sudo systemctl enable fluent-bit

AMI の作成

上記手順を実施した EC2 インスタンスから AMI を作成します。

起動テンプレートの作成

作成した AMI から起動テンプレートを作成します。起動テンプレートには、事前準備で作成した IAM ロールを IAM インスタンスプロファイルとして指定し、以下のユーザーデータを設定します。

ユーザーデータ
#!/bin/bash
set -eux
TOKEN=$(curl -sX PUT "http://169.254.169.254/latest/api/token" \
  -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
EC2_INSTANCE_ID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/instance-id)
echo "EC2_INSTANCE_ID=${EC2_INSTANCE_ID}" > /etc/sysconfig/fluent-bit
systemctl restart fluent-bit

このユーザーデータで環境変数 EC2_INSTANCE_ID を設定することで、インスタンス ID ごとに S3 のプレフィックスを分けて出力できます。作成した起動テンプレートは、Auto Scaling グループに設定します。

S3 へのログ出力を確認

出力結果を確認すると、インスタンスごとにログが S3 へ保存されていることを確認しました。

S3 バケット内のインスタンス ID ごとのプレフィックス
インスタンス ID ごとにプレフィックスが分かれている

出力されたログファイル
日付ごとのプレフィックスにログが出力されている

おわりに

今回の方法であれば、インスタンスが終了した後もログが残るため、長期保存や事後調査に活用できます。
本ブログの内容が、どなたかのお役に立てば幸いです。

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました。

この記事をシェアする

関連記事