matchで複数のアウトプットソースに保存したい時がある。
その場合はcopyプラグインを利用すると複数のアウトプットを指定できる。
今回の例ではファイルに書き出しつつ、1時間ごとにS3にApacheログファイルを送信している。
time_slice_format %Y%m%d_%H_apache.logがその設定であり、サイズがあふれない限り、このファイル名単位でS3に送信される。下記例では、年月日_時間_apache.logとなっていて、一時間単位でファイルをまとめてS3に送信する。time_slace_waitがその時間が終わったときに何分待つかという設定値だが、デフォルトは10分なので毎時10分過ぎにS3に送信される。
S3に送信される内容はfluentdのjson形式のファイルのようだ。
# Apache log
<source>
type tail
format apache
path /var/log/httpd/blog_access_log
tag apache.access
pos_file /tmp/fluentd-apache.pos
</source>
<match apache.access>
type copy
<store>
type file
path /var/tmp/apache.log
</store>
<store>
type s3
buffer_path /var/tmp/fluentd_s3
buffer_chunk_limit 100m #1chunkに保存できるデータサイズ上限
buffer_queue_limit 3 #1queueに保存できるchunk数の上限
retry_wait 30s #再送を実行するまでの待ち時間
retry_limit 5 #再送実施回数
aws_key_id "PUT YOUR AWS_KEY_ID"
aws_sec_key "PUT YOUR AWS KEY"
s3_region ap-northeast-1
s3_bucket バケット名
path logs/
#時間単位でログファイルを生成
time_slice_format %Y%m%d_%H_apache.log
# デフォルトは10分待ってからアップする。
# time_slice_wait 1m
</store>
</match>