はじめに
前回の記事でFluentdを使用してS3にアップロードしましたが、今回はそのアップロード先をタグ名によって動的に変更してみます。
tag名をパスに使用する方法は以下のURLのExample Configuration部分に記載されています。
s3 - Fluentd
# if you want to use ${tag} or %Y/%m/%d/ like syntax in path / s3_object_key_format, # need to specify tag for ${tag} and time for %Y/%m/%d in <buffer> argument.
#パス/ s3_object_key_formatで$ {tag}または%Y /%m /%d /のような構文を使用する場合、 #<buffer>引数で$ {tag}のタグと%Y /%m /%dの時間を指定する必要があります。
以上のことから、bufferにtagを引数で付ければよいとわかります。
実施内容
- conf設定
- TEST実施
実施手順
conf設定
前回使用したconfをベースに設定します。
Pathの部分だけ修正したconfは以下になります。
<source> @type tail path C:\Apache24\logs\access.log pos_file C:\var\log\td-agent\apache24.access_log.pos <parse> @type apache2 </parse> tag s3.apache.access </source> <match s3.*.*> @type s3 <assume_role_credentials> role_arn arn:aws:iam::************:role/test-bation role_session_name test-bation </assume_role_credentials> s3_bucket test-tmp-20200128 s3_region ap-northeast-1 path logs/${tag[0]}/${tag[1]}/${tag[2]} <buffer tag> @type file path C:\var\log\td-agent\s3 timekey 3m # 5 min timekey_wait 10m chunk_limit_size 256m </buffer> time_slice_format %Y%m%d%H </match>
TEST実施
Td-agentプロンプトを立ち上げて、プロセスを実行するコマンドを叩きます。
ログを新規で出力するため、apacheのローカルサーバへpingを実行します。
S3にタグ名と同じフォルダが作成され、その配下にファイルがアップロードされていることを確認しました。
所感
fluentdのtagで設定した名前は、bufferプラグインにtagを指定することで、配列から取得するように使用できることがわかりました。