複数WEBサーバのログを、一か所に集めて見やすくしよう!

こんにちは,おにぎり担当の平尾です。

f:id:hiraoy:20150207170949j:plain

今まで、ソーシャルWEBアプリ開発スマホアプリ開発を行ってきました。

今回が初投稿の記事になります。

今日中に記事を書かないと、罰として私の作業ディスプレイが50インチの巨大ディスプレイになってしまうので急ぎで!

記事の題名は

「複数WEBサーバのログを、一か所に集めて見やすくしよう!」

です。

WEBサーバが複数台ある場合、ログ集計・エラー発生状況などの確認時にサーバ分確認する必要があり面倒!!というときありますよね!

今回はApacheを例としてログをDBに入れる ところまでを説明します!

環境

CentOS 6.5

使用ミドルウェア

Apache WEBサーバ
fluentd(td-agent) ログの転送・集約を行うためのツール
mongoDBビッグデータ」を処理可能なパフォーマンスをもつNoSQLの性能と,RDBのもつ豊富な機能をバランスよく取り込んだソフトウェアです(すげぇ)

では早速設定してみましょう

[すでにインストールしてある場合は手順を飛ばしてください]

(以下rootユーザで実行)

Apache のインストールと起動
yum install httpd
/etc/init.d/httpd start

確認

curl http://localhost

デフォルトのページのhtmlが表示さればOK

MongoDB のインストールと起動

yumでインストールするのでURLを追加する。

vi /etc/yum.repos.d/mongodb.repo
以下内容入力
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
ここまでね

yum install mongodb-org
/etc/init.d/mongod start

確認

mongo

mongoDBのコンソールが表示されればOK

fluentd のインストール

yumでインストールするのでURLを追加する。

vi /etc/yum.repos.d/td.repo
以下内容を入力
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
gpgcheck=0
ここまでね

yum install td-agent

vi /etc/td-agent/td-agent.conf
元々ある設定は全部消してOK
<source>
  type tail
  format apache
  path /var/log/httpd/access_log
  tag apache.access
</source>

<match mongo.apache>
  type mongo

  database apache_log
  collection access

  host localhost
  port 27017

  flush_interval 10s
</match>

td-agent ユーザが見れるように権限を変える

chmod o+r /var/log/httpd

mongoDBに入れれるようにするためのプラグインのインストール

fluent-plugin-mongo

/usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-mongo

起動

/etc/init.d/td-agent start

では確認してみよう!

curl http://localhost
mongo
>use apache_log
>db.access.find();
{ "_id" : ObjectId("54d59a6e5031e02605000013"), "host" : "***.***.***.**", "user" : "-", "method" : "GET", "path" : "/", "code" : "403", "size" : "4954", "referer" : "-", "agent" : "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36" }
>db.access.find().count();
1

おおお!入ってます入ってます

DBに入れることによって抽出条件を簡単に変更できるので、いい感じですね!
mongoDBのIDEは「Robomongo」が個人的に一番よかったです。  

本題の複数サーバで実施する場合は
対象のWEBサーバに
fluentd のインストール
mongoDBに入れれるようにするためのプラグインのインストール

/etc/td-agent/td-agent.conf
host を集計サーバに向ければOK! たったこれだけです。

設定は結構簡単にできる感じですね!
お試しあれ!

今回のおすすめおにぎりは「新潟コシヒカリおにぎり 焼さけハラミ」!

おにぎり・寿司|ローソン公式サイト