二足歩行への一歩

技術者のハイハイの記録

fluentdでApacheのaccess_logを取得しMongoDBに放り込む

fluentdを使って、Apacheのaccess_logをMongDBにぶち込むまでの流れ。

 

環境

OS:centOS5.5

ruby 1.9.3

rails 3.2.11

 

mongoDBのインストールは別途

このあたりとかを参考にして下さい。

http://d.hatena.ne.jp/ja9/20100707/1278495362 

 

fluentdをインストール

$ gem install fluentd

でgemをinstallして(mongoDBに接続するプラグインもinstallされます)、

$ fluentd --setup fluent/

で初期セットアップをするだけ。

すると、

./fluentd/fluentd.conf

というファイルが作成される。

次にこのファイルで設定を行う。

$ vi ./fluentd/fluentd.conf

 

 

fluentd.confの設定

 

 

mongoDBはlocalhostの27017ポートを利用しています(デフォルト)。

 

sourceのtagをmongo.apache

として、

tagの記述に対してmatchを行う事で、

matchしたsourceについて、

match内にあるアクションを実行するイメージです。

 

tailは指定したファイルの末尾に更新があった場合に動作します。

.posファイルはどこまで処理を行ったかを管理するファイルです。

 

なので、この設定の動作を言語化すると、

/var/log/httpd/access_log

に変更が入ると、

pos_file /var/log/httpd/access_log.pos

を参照して処理開始点を決定し、

mongo.apacheという名前をつけます。

で名前が、mongo.*に該当するので、

localhostの27017ポートにあるmongoDBに

データを登録します。

 

 

はまったポイント

・.posファイルを指定しないと、mongoDBにログを入れ始めなかった(なぜか不明)