Amazon Linux でApacheのログを Fluentd経由でMongoDBに集約する
10genからこんな記事が
===
ということで、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()
等で確認できる。