もふもふ技術部

fluentdでapacheログを収集する


fluentdを使ったプロジェクトを手伝っていたことがあって多少しっていたつもりでしたが、忘れてしまったので改めてGetting Startedしてみます。

fluentdは簡単にいってしまうと簡単に複数サーバのログ収集とか出来て、収集したログをファイルストレージに置いたり、mongoにつっこんだりっていうことが出来るものですね。

CentOS 6.5でやっていきます。

apacheログをファイルに収集する

まずは基礎的なところをやってみます。サーバ上のapacheログをサーバ自身の別ファイルに収集していきます。

一見意味がないようにも見えますが、ログ形式がjsonになるので一応扱いやすくはなりますかね。Getting Startedだから大目に見てくださいということで。

下記を参考にした。

http://docs.fluentd.org/articles/install-by-rpm

http://knowledge.sakura.ad.jp/tech/1336/2/

td-agentをインストール。
収集対象と集約サーバでインストールするソフトが分かれているわけではないみたい。

設定ファイルを確認してみる。デフォルトの設定が書いてあった。

デバッグ用の設定が含まれているのでhttp postしてログ収集を試してみる。td-agent.logにデバッグログが収集されていることを確認。

$ curl -X POST -d ‘json={“json”:”message”}’ http://localhost:8888/debug.test
$ tail /var/log/td-agent/td-agent.log

2014-04-26 14:14:49 +0900 debug.test: {“json”:”message”}

続いてapacheのログを収集してみる。今回はhttps時のログの/var/log/httpd/ssl_access_logを対象にする。

ログは正規表現でパースするのが多いみたいですが、format apache2っていう指定で、apacheログの標準フォーマットはパース出来るみたい。

設定ファイルのリロード

apacheログを吐くサイトにアクセスしてみてもログが収集されなかった。あれれ?

td-agentのログを調べるとpermission deniedが発生していた。CentOSはデフォルトで/var/log/httpdディレクトリのパーミッションがrootの700なので読み込めないという。

/var/log/httpdディレクトリに一般ユーザー実行権限を付与。

これでログが収集されるようになりました!

次回は収集先をMongoDBに変えてやってみます!

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。