td-agentのレポジトリが公開されたのでちょっとカスタマイズしてみた #fluentd

最近のマイブームはfluentdなんですが、やっぱりrubyとかまでマジメにセットアップしようとするとどうしてもハードルが高いですよね。特にアプリサーバ側に入れる場合、数も多いですしなるべく簡単にインストールしたいものです。

fluent-agent-liteじゃ物足りない方へtd-agent

ログをパースせずに単純にfluendにforwardするだけなら先日公開された@tagomorisさんのfluent-agent-liteを使ってみるのが簡単だと思います。

ただ、in_tailプラグインを使ってパースして構造化した状態でfluentdの流れに乗せるのと同じことをやろうと思うと、送られた側でout_exec_filterとかする必要があって、すぐに使ってみたい人にはそこを書かないといけないのでちょっと面倒かも知れません(大して面倒じゃないですが)。そこでtd-agentです。

td-agentはTREASURE DATAが公開しているfluentdのフルスタックなパッケージです。なんとrubyをrpmの中に入れてしまっているので、rubyの準備をせずとも動きます(なぜかrubyコマンドだけrequireなので入れることにはなっちゃいますがw)。

td-agentは実態はただのfluentdなのでプラグインも自由に利用できます。なので、webサーバに入れてapacheのアクセスログをパースして別のfluentdに転送するとかがconfを書くだけでできます。すばらしい!

CentOS4で動かないtd-agent

で、早速これを使ってみようと思ったんですが、公開されてるrpmがCentOS4ではライブラリの関係で動かすのが容易ではなく(てか多分無理orz)、死にかけてました。本音はCentOS4を駆逐すべきだと思いますが、なんとか動かしてみたい!

と思っていたところで@kzk_moverさんがsrc.rpmを公開してくれて、さらにtd-agentのビルド用レポジトリまでも公開してくれました!Thanks!!

丁度、CentOS4向けに調整したかった箇所と、fluentdのバージョンを上げて使いたいという要望もあったので、早速両方とも対応してpull requestをしてみました!

本体に取り込まれるかは分かりませんが、そこはgithub、forkした僕のレポジトリであればこの対応したものを利用できます!→追記 無事mergeして頂けました!ありがたい>< Pull Request #1: rpmbuild using specific revision of fluentd and adjust for CentOS4 by riywo · treasure-data/td-agent

リビジョン指定rpmbuildとCentOS4対応してみました

例えば、今のtd-agent1.1.3ではfluentdのバージョンが0.10.10なんですが、in_tailプラグインのsymlink対応がまだ不十分で思った挙動をしてくれません。0.10.15では対応しているので、これを利用したrpmを作成したければ以下の様にするだけです。

$ ./make-rpm.sh e20137ce1f92c4e364d304969f56bf41e713ee07

コマンドライン引数はfluentd本体のgithubでのリビジョンになります。0.10.15はこのリビジョンに対応します。このコマンドで以下の様な名前のrpmが生成されます。

td-agent-1.1.3-0.e20137ce1f.ARCH.rpm

見ての通り、rpmのReleaseの部分にリビジョンの先頭10文字が入っていますので、一応素のtd-agentとも区別できます。多分updateとかはうまく動かないかもですがその辺は適当に。。。

CentOS4向けの調整は2箇所で、1つは/etc/init.d/td-agent statusがCentOS4だとコケるのでstatus -pをやめたのと、rubyバイナリを破壊することで有名なprelink向けの対応ですが、CentOS4のいくつかではprelinkのバージョンが古くて/etc/prelink.conf.dってのに対応してなかったりするので、直接/etc/prelink.confに追記するようにしました。

というわけで、これまでCentOS4だから二の足を踏んでいたあなたも、Let’s enjoy flunetd life!