読者です 読者をやめる 読者になる 読者になる

aws memo

AWS関連の備忘録 (※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。1年以上古いエントリは疑ってかかってください)

Amazon Linux でApacheのログを Fluentd経由でMongoDBに集約する

10genからこんな記事が

The 10gen Blog on MongoDB and NoSQL, Fluentd + MongoDB: The Easiest Way to Log Your Data Effectively.

 ===

ということで、Amazon Linuxでの環境構築メモ

まずは、httpd+Fluentdを入れるインスタンス (web)と、MongoDBを入れるインスタンス(mongo)を用意して、インストール。

EC2: AMazon Linux にFluentdをインストール - aws memo

EC2: AmazonLinuxにMongoDBをインストール - aws memo

次に、fluent-plugin-mongo をインストール

$ sudo /usr/local/bin/fluent-gem install fluent-plugin-mongo

その後、上記URLにあるように、fluentdがapacheのaccess_logをtailして見るようにsouceを定義し、その内容をmongoに送信するように matchを定義する

$ sudo vi /etc/fluentd/fluent.conf
$ sudo cat /etc/fluentd/fluent.conf
--snip--
<source>
   type tail
   format apache
   path /var/log/httpd/access_log
   tag mongo.apache
</source>
<match mongo.apache>
   type mongo
   database apache
   collection access
   host mongo.example.com
   port 27017
   #interval
   flush_interval 10s
   #capped
   #capped_size 100m
   #user test
   #password testpass
</match>
--snip--

 あとは、mongoサーバのSecurity Groupで27017を適宜空けておき、httpd+fluentdサーバで、fluentdを起動してから、おもむろにブラウザでアクセスして access_logにログを書き込ませる。

mongo側では

$ mongo
> use apache
> db.access.find()
> db.access.find().count()
> db.access.find({code : "200" })
> db.access.find({code : "200" }).count()

等で確認できる。