fluentbitでNginxのアクセスログをCloudflare R2へ送信

Cloudflareの提供するAmazon S3互換のオブジェクトストレージにfluentbitを使ってログを転送してみた. endpointパラメータでCloudflare R2のエンドポイントを指定するのがポイントになる. 送信間隔は300秒で設定している.

fluent-bit.conf

[SERVICE]
    flush        300
    daemon       Off
    log_level    info
    parsers_file parsers.conf
    plugins_file plugins.conf
    http_server  Off
    http_listen  0.0.0.0
    http_port    2020
    storage.metrics on

[INPUT]
    name     tail
    tag      nginx.${HOSTNAME}
    db       /var/log/nginx/fluentbit.pos
    path     /var/log/nginx/*.log
    path_key filename
    parser   nginx

# For Debug
# [OUTPUT]
#     name  stdout
#     match nginx.*

[OUTPUT]
    name             s3
    match            nginx.*
    bucket           cf-apac-log-archive
    endpoint         https://xxxxxxxx.r2.cloudflarestorage.com
    compression      gzip
    s3_key_format    /$TAG[0]/$TAG[1]/%Y/%m/%d/%H/%M/%S/$UUID.gz

Systemdのサービスを以下のコマンドで修正する.

sudo systemctl edit fluent-bit

以下の内容を追記する.AWSのアクセスキーを設定する.

[Service]
Environment=AWS_ACCESS_KEY_ID=xxxx
Environment=AWS_SECRET_ACCESS_KEY=xxxxx

参考資料