1. shnagai

    Posted

    shnagai
Changes in title
+Fluentd copyプラグイン条件分岐
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,58 @@
+
+今更だけど、Fluentdで一つのタグ(一部条件マッチする)に対して、条件分岐的に複数のアウトプットを行いたい時に少しはまったのでメモ。
+要は、copyプラグインのstore句にタグ条件が書ける事を知ったという話です。
+
+##やりたい事
+複数サーバから出てくる一つ一つのイベントに対して、一部マッチする複数のタグ条件で異なる処理を行いたい。
+例えば、アクセスログを集めてきて、
+
+①web.a.bというタグのものは、file出力とs3保管
+②xweb.a.bというタグのものは、file出力のみ
+
+こんな時、下記のようなフィルタを何も考えずに書くと、#1のファイル出力だけ処理され、#2のs3への処理は行われない。
+
+####個人的にはちょっと忘れがちだけど、fluentdは一つのイベントに対して、先にマッチするものがあると後のmatch句は効かない。。
+
+```
+#1
+<match *.a.b>
+ type file
+ path /tmp/aaa
+</match>
+
+#2
+<match web*.a.b>
+ type s3
+ ・・・
+</match>
+```
+
+
+
+で、そんな時どうするか。
+
+下記のように、copyを使ってstoreにマッチングするタグパターンを記述すれば実現出来る。
+
+```
+<match *.a.b>
+ type copy
+
+ #1
+ <store>
+ type file
+ path /tmp/aaa
+ </store>
+
+ #2
+ <store web*.a.b>
+ type s3
+ ・・・
+ </store>
+</match>
+```
+
+store句の条件を指定出来ると知らずに、どうフィルタリングしようかとか結構迷ってしまった。
+もっといい方法あるのかな。。
+
+久々に触ると色々忘れてるなと実感。。
+改めて、Fluentdはタグの設計が大事だなと思いました。