ひと手間加える必要があったのでメモ。
バージョン
- td-agent v3.8.1
- fluent-plugin-cloudwatch-logs v0.13.0
方法
まずファイル名をタグに入れるために、 tag
にワイルドカードを指定する。こうすることで、フルパスが tag
の末尾に追加される。(デリミタは .
に変換される)
<source> @type tail format none pos_file /path/to/pos/foobar.pos path /path/to/log/*.log read_from_head true tag log.* </source>
次に record_transformer
を挟んでレコードにストリーム名を追加する。tail
でタグにフルパスを含めたので、ファイル名の部分以降を tag_suffix
で抜き出して指定する。
<filter log.**> @type record_transformer <record> stream_name ${tag_suffix[4]} </record> </filter>
何故レコードにストリーム名を追加するかと言うと、 fluent-plugin-cloudwatch-logs
には log_stream_name_key
と言うオプションがあり、ここで指定したキーの値をストリーム名に使うことが出来るため。ストリーム名に使ったキーをCloudWatch Logsに残したくない場合は remove_log_stream_name_key
も有効にする必要がある。
<match log.**> @type cloudwatch_logs log_group_name foobar log_stream_name_key stream_name remove_log_stream_name_key true auto_create_stream true </match>
他にも use_tag_as_stream
と言うオプションがあるが、これはタグすべてをストリーム名に使ってしまう。ファイル名だけにしたい場合は使うことが出来ない。