https://github.com/tagomoris/fluent-plugin-forest
◯設定例
<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>
データの保存先(path ならびに buffer_path)にplace holderとして${tag}を指定しています。このように設定しておくと、"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に流れているデータが以下のようなフォーマットになっていて、
1970-01-01T00:00:00+09:00 log.pc {"event":"register"}
"event" に各種イベント名が含まれており、タグ名とイベント名の組み合わせごとに保存先を変更したい、という場合は以下のように設定します。
<match log.**>
type forest
subtype rewrite_tag_filter
<template>
remove_tag_prefix log
capitalize_regex_backreference yes
rewriterule1 event (.*) hoge.${tag}_$1
</template>
</match>
log.pc というタグを hoge.pc_register というタグに書き換えています。こちらと先述のout_s3の定義を組み合わせると、最終的に [bucket_name]/fluentd_logs/hoge.pc_register/ というS3のディレクトリにファイルが保存されます。
0 件のコメント:
コメントを投稿