ひとりでやるRiak Advent Calendar 2012 day16 - fluent-logger-erlangで快適ログ生活その2

Loggers' Playday Parade

さて昨日の今日であるがふたたびfluentdのはなし。Riakもログを出すので、大きなクラスタを監視するときはログを見ていたい。Nagiosなりboundaryなり何なりそれなりのツールはあるだろうが昨今のfluentdブームに乗って、ということで、Erlang/OTPアプリケーションでgen_eventをつかってログを出す人むけにfluent-logger-erlangなるものを(もう随分前に)作ったのだが、今回ちょっとだけ作りなおした。Riakで読みやすいメッセージを出すためだ。Erlang/OTPに組み込むためにはgen_eventの使い方に習熟している必要があるので省略。

Riakに組み込む方法は簡単だ。

$ git clone git://github.com/kuenishi/fluent-logger-erlang.git
$ cd fluent-logger-erlang
$ make
$ cp ebin/*.beam deps/msgpack/ebin/msgpack.beam path/to/someriak/lib/basho-patches

で、Riakの設定を変更する。lagerのセクションで

    {handlers, [ 
                   {lager_file_backend, [ 
                       {"./log/error.log", error, 10485760, "$D0", 5}, 
                       {"./log/console.log", info, 10485760, "$D0", 5} 
                   ]},
                   {fluent_event, debug}
               ] },

としておく。ここに指定するだけで、ローカルマシンの localhost:24224 にmsgpackでdebugというタグでログを吐き出すようになる。log/console.logに出てくるものとほとんど同じフォーマットになっている。
riak startと起動してみるだけで、こんな感じでログが出てくる。lagerが受け取っているdebugのログも出てくるので、ログレベルを絞る方法をどうしようかなあ。

2013-02-16 02:26:10 +0900: plugin/out_riak.rb:52:block in write:  lager_date="2013-02-16" later_time="02:26:01.535" txt="[debug] <0.48.0> Lager installed handler fluent_event into lager_event" time="2013-02-15T17:26:01Z" tag="riak.lager_log"
2013-02-16 02:26:10 +0900: plugin/out_riak.rb:52:block in write:  lager_date="2013-02-16" later_time="02:26:01.544" txt="[debug] <0.52.0> Lager installed handler error_logger_lager_h into error_logger" time="2013-02-15T17:26:01Z" tag="riak.lager_log"
2013-02-16 02:26:10 +0900: plugin/out_riak.rb:52:block in write:  lager_date="2013-02-16" later_time="02:26:01.544" txt="[info] <0.7.0> Application lager started on node 'riak@127.0.0.1'" time="2013-02-15T17:26:01Z" tag="riak.lager_log"

browser.htmlにちょっとしたクエリの機能もつけたけどこれはまた明日にするか…。