メモ
普通のパターン
各エージェントから送られてきたログを単純に集約してコレクター側でファイルに吐くのであればコレで十分なはずです。
エージェント側
<source> type tail tag http.access path /var/log/nginx/access.log pos_file /var/log/td-agent/nginx.access.log.pos format none </source> <match *.**> type forward <server> name active host log.local port 24224 </server> </match>
コレクター側
<source> type forward port 24224 bind 0.0.0.0 </source> <match http.access> type file_alternative output_include_time false output_include_tag false path /var/log/td-agent/http/access.*.log symlink_path /var/log/td-agent/http/access.log </match>
コレクター側でごにょごにょしたいとき
以下の例では何もしてないですが、recordの中身を見てファイル振り分けたいときとかrecordの中身を書き換えたいときとかのパターンです。
エージェント側は同じ
コレクター側
output_data_typeがltsvのとき、timeとtagは別扱いで、recordの部分しかltsvの形式になってくれないので、record_reformerでrecordの中にtimeを包含させてしまって、timeとtagをfile_alternativeで出力しないようにしてます。
output_include_time false、 output_include_tag falseしてあげてrecordのみ出力するようにしているのがミソです。
<source> type forward port 24224 bind 0.0.0.0 </source> <match http.access> type parser add_prefix parsed format ltsv key_name message </match> <match parsed.http.access> type record_reformer renew_record false tag local_store.http.access <record> time ${time} </record> </match> <match local_store.http.access> type file_alternative path /var/log/td-agent/http/access.*.log symlink_path /var/log/td-agent/http/access.log output_include_time false output_include_tag false output_data_type ltsv </match>
plugin書けば良いという話もありますが、もう少しすっきり書きたいところ。