22
23

More than 5 years have passed since last update.

fluentdでapacheのアクセスログをmongoDBにつめる方法

Posted at

fluentd(td-agent)を使ってapacheのアクセスログを動的にmongoDBに登録していく。
WEBアプリとログ集計のサーバー2台構成。

送信側サーバー:
 appacheのアクセスログを出力しているサーバー。

受信側サーバー:
 mongoDBでログを集計するサーバー。

送信側サーバー準備

td-agentのインストール

yumでインストールするためにURLを追加する。
その後でyumでインストールを行う。

sudo vi /etc/yum.repos.d/td.repo
td.repo
[treasuredata]name=TreasureDatabaseurl=http://packages.treasure-data.com/redhat/$basearchgpgcheck=0
sudo yum install -y td-agent

td-agentの設定

td-agent.confを書き換える。
※元ある内容は全て消して書き換えてしまってよい。

vi /etc/td-agent/td-agent.conf
td-agent.conf
<source>  type tail  format apache  path /var/log/httpd/httpd_access_log  tag mongo.apache</source><match mongo.apache>  type forward  flush_interval 10s  <server>    host ホスト名    port 24224  </server></match>```

#受信サーバー準備
##fluentdのインストール
gemからfluentdをインストールする。
※受信サーバーにはruby1.9以上が入っていることが前提。

gem install fluentdgem install bson_extgem install fluent-plugin-mongo
```

mongoDBのインストール

yumでインストールするためにURLを追加する。
その後でyumでインストールを行う。

vi /etc/yum.repos.d/10gen.repo
10gen.repo
[10gen]name=10gen Repositorybaseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64gpgcheck=0enabled=1
yum install mongo-10gen-server mongo-10gen

ログ収集の開始

mongoDBの起動

受信側サーバーでmongoDBを起動する。

/etc/init.d/mongod start

受信側サーバーでfluentdを起動する。

fluentd -c /etc/fluentd/fluent.conf -vv -o /var/log/fluentd/fluentd.log &

送信側サーバーでtd-agentを起動する。

sudo /etc/init.d/td-agent start

動作確認

送信側サーバーでアクセスログを手動で書き込む。

sudo vi /var/log/httpd/httpd_access_log
127.0.0.1 - - [10/Jun/2013:20:30:39 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"127.0.0.1 - - [10/Jun/2013:20:46:07 +0900] "GET / HTTP/1.1" 403 5044 "-" "Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0"127.0.0.1 - - [10/Jun/2013:20:46:07 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0"

受信側サーバーでmongoDBの内容を確認する。

mongo httpd
>db.accesslog.count()
3
>db.accesslog.find

mongoDBにアクセスログの内容が確認できたら設定完了。

おまけ

アクセスログが受信側サーバーに登録されていないとき

td-agentのログを確認する。

tail -f -n 100 /var/log/td-agent/td-agent.log

これでエラーを確認し対応する。

22
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
23