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-agent
1.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
に追記するようにしました。
- CentOS 4.7 では prelink が ruby 1.9.1 のバイナリを破壊する – MoreslowlyWiki
- Ruby のバイナリが prelink により毎朝 4 時に壊れてセグフォになる – #生存戦略 、それは – subtech
- “pidof: invalid options on command line!” のメッセージが出る
というわけで、これまで CentOS4 だから二の足を踏んでいたあなたも、Let’s enjoy flunetd life!