先週末くらいにTLにたくさん流れてきた"fluentd"について調べてみたらよさそうだったので、勉強を兼ねてpluginを書いてみました。

fluentdっていうのは、ログを収集するツールで、プラグインでいろいろ柔軟に設定できて、複数のサーバのいろんなイベントのログを集めて使いやすい形にする、というような使い方ができるみたいです。
Scribeのようなもの。

fluentdについてもっと知りたい人に参考になるのは以下のサイトです。

最近ちょっと触っていたKestrelというメッセージキューへログを投げられたら便利かな、ということで、fluentdで集めたログをkestrelにenqueueするpluginを作ってみました。 実装は、既にあるいろいろなプラグインを参考にしました。Gemを作るのも初めてでよく分かんなかったけど、fluentdのためのプラグインをイチから書く手順 - tagomorisのメモ置き場 や jeweler でらくらく rubygems 作成(github編)- @sugamasao.blog.title # => ”コードで世界を変えたい”の通りにやっていたらできました。

jewelerって便利。

ちゃんとrubygemsに登録されているので、そのうち

gem install fluent-plugin-kestrel

でインストールできるようになる、と思ってるんだけど、まだできないので何か足りないのかもしれない。

※2012/2/13追記 インストールできるようになりました。

使い方は、kestrelが動いている状態で、fluentdの設定に


  type kestrel

  host localhost     # kestrel host (required)
  queue test         # queue name of kestrel (required)

  # port 22133         # optional, default 22133

のように書けばOKです。

どんな感じのデータが入ってるかというと、

$ telnet localhost 22133

get test

VALUE test2 0 125
2012-02-11T16:38:54Z    apache.access   {"host":"::1","user":"-","method":"GET","path":"/test/","code":"304","size":"-"}
END

という感じで、タブ区切りで時刻、タグ、JSONが入る感じです。

この辺のフォーマットは設定で変えられるようにしたいと思っています。