fluentdでログの内容によって保存先のmongoDBコレクションを変えたくなったので調べてみた。
求めているものはまさしくこれ。
fluent.confに以下の設定を行う。
<source> type forward id forward_input </source> <match myapp> type rewrite_tag_filter rewriterule1 col ^(.+)$ mongo.$1 </match> <match mongo.**> type mongo host localhost port 27017 database AppLog tag_mapped remove_tag_prefix mongo </match>
colキーで指定した値をコレクション名とするようにした。fluent-catコマンドでログを送ってみる…
$ echo '{"a": 1,"b": 2,"col":"Hoge"}' | fluent-cat myapp
fluentdはデータをバッファするので、しばらく待った後にmongoDBをfindしてみると…、
$ mongo AppLog MongoDB shell version: 2.4.12 connecting to: AppLog > db.Hoge.find(); { "_id" : ObjectId("54fc3d37bb54fe1669000002"), "a" : 1, "b" : 2, "col" : "Hoge", "time" : ISODate("2015-03-08T12:13:58Z") }
Hogeコレクションに入った!