output_copyは1つのログソースを複数のサービスへ送りたいみたいなケースで使えるプラグイン。matchで@type copyを指定したら処理をそれぞれ書くことで複数の送信先を指定することが可能となる。
<source>
@type tail
tag qiita.a
path /var/log/hogehoge.log
</source>
<match **>
@type copy
<store>
# 処理1
@type file
path /var/log/fluent/myapp1
...
</store>
<store>
# 処理2
@type s3
...
</store>
<store>
# 処理3
@type forward
...
</store>
</match>
問題点
いろいろググってたら見つけたのだがどうやらcopyはどれか一つでも送信に失敗したら全てのstoreの処理が失敗になるらしい。plugin1がエラーを吐いた時、plugin2は実行されないと言うのは些か不思議な気もする。
じゃあどうするのって話だが記事を読んでるとcopy_exなるものがあるらしいがどうやら公式のプラグインにも同じような機能が取り込まれてるのかドキュメントがあったのでstoreにignore_errorを指定すると良いらしい。
<match app.**>
@type copy
<store ignore_error>
@type plugin1
</store>
<store>
@type plugin2
</store>
</match>