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にログを入れ始めなかった(なぜか不明)