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をインストール。
収集対象と集約サーバでインストールするソフトが分かれているわけではないみたい。
1 2 3 4 |
$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh $ sudo /etc/init.d/td-agent start $ sudo /etc/init.d/td-agent status td-agent (pid 16811) を実行中... |
設定ファイルを確認してみる。デフォルトの設定が書いてあった。
1 |
$ cat /etc/td-agent/td-agent.conf |
デバッグ用の設定が含まれているので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を対象にする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ sudo vim /etc/td-agent/td-agent.conf # 末尾に追記 <source> type tail path /var/log/httpd/ssl_access_log tag apache.access pos_file /var/log/td-agent/ssl-access_log.pos format apache2 </source> <match apache.access> type file path /var/log/td-agent/httpd/ssl_access.log time_slice_format %Y%m%d time_slice_wait 10m compress gzip </match> </pre> |
ログは正規表現でパースするのが多いみたいですが、format apache2っていう指定で、apacheログの標準フォーマットはパース出来るみたい。
設定ファイルのリロード
1 |
$ sudo service td-agent reload |
apacheログを吐くサイトにアクセスしてみてもログが収集されなかった。あれれ?
td-agentのログを調べるとpermission deniedが発生していた。CentOSはデフォルトで/var/log/httpdディレクトリのパーミッションがrootの700なので読み込めないという。
1 2 3 |
$ less /var/log/td-agent/td-agent.log ... 2014-04-26 13:35:13 +0900 [error]: Permission denied - /var/log/httpd/ssl_access_log |
/var/log/httpdディレクトリに一般ユーザー実行権限を付与。
1 |
$ sudo chmod o+x /var/log/httpd |
これでログが収集されるようになりました!
1 2 3 |
$ tail -f /var/log/td-agent/httpd/ssl_access.log.20140426.b4f7eabcf60df5749 ... 2014-04-26T14:49:40+09:00 apache.access {"host":"123.198.24.212","user":null,"method":"GET","path":"/javascripts/gantt.js?1363949213","code":304,"size":null,"referer":null,"agent":null} |
次回は収集先をMongoDBに変えてやってみます!

原田 敦

最新記事 by 原田 敦 (全て見る)
- Rails Engineでブログ機能追加するgemを作る - 2015年3月15日
- WEBエンジニア一人だけでサービスを作りきる方法-夫婦のための自動ごはん予定お知らせサービス「GoHaaan」制作でやったこと - 2015年3月7日
- CentOS6でMariaDBのDynamic Columnsを試してみた - 2015年2月28日