Fluentd v1でのfluent-plugin-s3の設定方法が以前とは結構変わっているため、どのように書くべきか記載する。
Fluentd v1より前の書き方
以前は以下のように記載すれば、1分ごとにS3にファイルを保存し、また1時間ごとにS3のパスを分けることができた。
<match **>
@type s3
aws_key_id XXXXXXXXXXXXXXXXXXXX
aws_sec_key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
s3_bucket test
s3_region ap-northeast-1
format ltsv
flush_interval 60
buffer_type file
buffer_path /var/log/td-agent/buffer/test
path "dt=%Y-%m-%d-%H/#{Socket.gethostname}_"
time_slice_format %Y%m%dT%H
</match>
Fluentd v1の書き方
buffer tag,time
Fluentd v1からは、各所で<buffer>
のようにディレクティブを使うようになっている。<buffer>
ディレクティブを使うときにtime
を記載しないとpath
等で正しく日時を扱えず、常に%Y%m%d%H
が本日の0時を指してしまう。(日本で実行しているので例えば2019041909となる)
https://docs.fluentd.org/v1.0/articles/out_s3#example-configuration
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 inargument.
同じ設定をFluentd v1用に書き換えると、以下のようになる。
<match **>
@type s3
aws_key_id XXXXXXXXXXXXXXXXXXXX
aws_sec_key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
s3_bucket test
s3_region ap-northeast-1
<format>
@type ltsv
</format>
<buffer time>
@type file
path /var/log/td-agent/buffer/test
timekey 1m
timekey_wait 0
</buffer>
path "dt=%Y-%m-%d-%H/#{Socket.gethostname}_"
time_slice_format %Y%m%dT%H
</match>
timekey, timekey_wait
https://docs.fluentd.org/v1.0/articles/out_s3#bufferからflush_interval
の設定がなくなっている。time sliced bufferがデフォルトのbuffer設定とのことなので、buffer-sectionのtime sliced bufferの項をもとにtimekey
とtimekey_wait
を設定する。
The buffer of the S3 plugin. The default settings is time sliced buffer.
<buffer time>
@type file
path /var/log/td-agent/buffer/test
timekey 1m
timekey_wait 0
</buffer>