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!