トップ «前の日記(2012/05/20 (日) ) 最新 次の日記(2012/05/22 (火) )» 編集 RSS feed

HsbtDiary


2012/05/21 (月) [長年日記]

[fluentd][ruby] gentoo に fluentd を入れてみた

fluentd casual talk に参加してきたので、カジュアルに fluentd を入れてみた。

対象はこの hsbt.org で OS は funtoo、最初何を入れれば良いのかよくわからなくて td-agent とか色々探してみたんだけど、deb と rpm しかないらしい。途方に暮れていたら kzk_mover さんからadviceが。

@hsbt td-agentは、ruby, jemalloc, fluentd, 各種人気pluginを同梱したパッケージなのです。詳しい違いはこちらに。 > http://t.co/35xLSDkp 2012-05-21 08:36:01 +0000 Reply Retweet Favorite

なるほどなるほど、最小構成だと gem i fluentd して実行すれば良いんだね。ということで Gemfile とか別に必要ないので、1.9.3 の環境でおもむろに

$ gem i fluentd fluent-plugin-mongo

でインストールしてしまった。Gemfile でちゃんと管理するのは gem のバージョンでコンフリクトしてからでいいや。

この後は root 権限で fluentd --setup として /etc/fluent/fluent.conf を作成。今回は nginx の access_log を mongodb に流したかったので下のようにベタっと書いた。


<source>
  type tail
  path /var/log/nginx/access.log
  format apache
  tag nginx.access
  pos_file /tmp/fluentd-nginx.pos
</source>

<match nginx.access>
  type mongo
  database nginx
  collection access
  host 127.0.0.1
  port 27017
  flush_interval 10s
</match>

mongodb は emerge でインストール出来る奴をそのままインストールしただけ。これで fluentd をおもむろに実行して、mongo にデータが入っているかを確認。

{ "_id" : ObjectId("4fb9ff6f9100de714c000014"), "host" : "119.235.237.89", "user" : "-", "method" : "GET", "path" : "/diary/index.rdf", "code" : "200", "size" : "33458", "referer" : "-", "agent" : "Yeti-FeedItemCrawler/1.0 (NHN Corp.; http://help.naver.com/robots/)", "time" : ISODate("2012-05-21T08:40:13Z") }

だいたい大丈夫っぽい。ここまできたら、fluentd を svscan とかで常駐させるようにスクリプトをざっと書いて終わり。

最初、何から手を付ければいいのかよくわからなかったけど、ただの gem ファイルの実行形式ということがわかれば割とあっさり導入することが出来た。これだけで、アクセスログやその他諸々をシェルのパイプのようにやりたいようにできるというのは凄いねえ。Plagger が爆発した時のような雰囲気と同じような気がする。

ひとまず、ログを貯めることはできるようになったので、まずはこれをざっくり検索するためのフロントエンドでも書こうかな。

本日のツッコミ(全2件) [ツッコミを入れる]
# ursm (2012/05/22 (火) 11:21)

つ https://github.com/esminc/portage-overlay/tree/master/app-admin/fluentd

# hsbt (2012/05/22 (火) 12:39)

何これ便利