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>