⛳
FluentdでS3へログの出力設定のTips
はじめに
Fluentdを利用して、アプリケーションログをS3に保存し、Athenaで検索できるようにした時の対応メモです。
Fluentdの基本的なことには触れていないので、別記事を参照ください。
Fluentdのインストール用ansible
ansibleにて構成管理を行っているので、Ansible Galaxyから以下のroleを利用
EC2インスタンスプロファイル
S3へ出力する際の権限設定はIAMキーではなく、インスタンスプロファイルにて以下のポリシーを設定
s3_object_key_formatの設定
デフォルトのindex
から uuid_flush
に変更
S3へのAPI増加はAmazon GuardDuty
のコスト(AWS CloudTrail S3 データイベント分析)にも跳ねるので極力下げる
S3のpathはAthenaパーティション分割を考慮
S3のオブジェクトのパスはAthena利用時にパーティションを利用しやすい形式に設定
tg-agent.conf
path ${tag[1]}/${tag[2]}/${tag[3]}/dt=%Y-%m-%d-%H/
Athenaパーティション射影にて自動でパーティション化
Athenaのパーティション利用時は、オブジェクト追加時も自動でパーティション管理されるようパーティション射影により設定
CREATE EXTERNAL TABLE
TBLPROPERTIES (
'projection.enabled' = 'true',
'projection.date.type' = 'date',
'projection.date.format' = 'yyyy-MM-dd-HH',
'projection.date.range' = 'NOW-1MONTH,NOW',
'projection.date.interval' = '1',
'projection.date.interval.unit' = 'HOURS',
'storage.location.template' = 's3://<S3 Bucket>/<S3 Path>/dt=${date}'
)
Discussion