https://github.com/tagomoris/fluent-plugin-forest
◯設定例
データの保存先(path ならびに buffer_path)にplace holderとして${tag}を指定しています。<match hoge.**> type forest subtype s3 <template> aws_key_id [aws_key] aws_sec_key [secret_key] s3_bucket [bucket_name] s3_endpoint [region_name].amazonaws.com path fluentd_logs/${tag}/ buffer_path /var/log/fluentd/${tag} </template> </match>
このように設定しておくと、"hoge.**" のログデータについてタグごとに fluentd_logs/ 配下に保存されるようになります。
一点注意として、out_s3はfile typeのbufferを標準では使用するようになっており、いったんバッファ情報を特定フォルダ(buffer_path)に保存します。その際、buffer_path の保存先をタグごとに振り分けて置かないと、同じbufferファイルに複数タグのデータが保存され、S3保存時にも一緒くたに保存されてしまいます。
◯json内に含まれた値に応じて保存先を変更する
あらかじめ設定されたタグではなく、jsonに含まれた値に応じて保存先を変更したい場合は、rewrite_tag_filter を使用してタグを書き換える、という方法があります。
https://github.com/y-ken/fluent-plugin-rewrite-tag-filter
たとえばFluentdに流れているデータが以下のようなフォーマットになっていて、
"event" に各種イベント名が含まれており、タグ名とイベント名の組み合わせごとに保存先を変更したい、という場合は以下のように設定します。1970-01-01T00:00:00+09:00 log.pc {"event":"register"}
log.pc というタグを hoge.pc_register というタグに書き換えています。<match log.**> type forest subtype rewrite_tag_filter <template> remove_tag_prefix log capitalize_regex_backreference yes rewriterule1 event (.*) hoge.${tag}_$1 </template> </match>
こちらと先述のout_s3の定義を組み合わせると、最終的に [bucket_name]/fluentd_logs/hoge.pc_register/ というS3のディレクトリにファイルが保存されます。
0 件のコメント:
コメントを投稿