fluentdを使ってみる
以前から流行ってるfluentdを色々使ってみようと。とりあえずnginxのログをfluentdに流してみる。環境はあくまで勉強用途なのでUbuntu12.10
セットアップ
通りにapt-getでtd-agentを入れる。で、td-agentっていうユーザーも作られるのでnginxからのログをfluentdでtailする際に出力先として/var/log/fluentd辺りを作って権限もtd-agentユーザーでアクセス出来るようにしとく(しないとPermission Deniedになる模様)
で今回使わないけど、fluent-catとか色々コマンドがあるんだがこれが/usr/lib/fluent/ruby/binっていうところになってる模様げなので、そこをパス設定しておく
td-agent.conf
/etc/td-agentにtd-agent.confがあるので、それをいじる
<source>
type tail
format apache
path /var/log/nginx/access.log
tag nginx.accesslog
</source>
<match nginx.accesslog>
type file
path /var/log/fluentd/nginx
</match>
起動
普通にサービスを起動するか
sudo -u td-agent /usr/lib/fluent/ruby/bin/fluentd -c /etc/td-agent/td-agent.conf
な感じでtd-agentユーザーでfluentdを起動する、その際に-cオプションで設定ファイルを指定する感じかなと。で起動した状態でnginxなWebサーバーにアクセスすると
2012-10-29T16:54:00+09:00 nginx.accesslog {"host":"127.0.0.1","user":"-","method":"GET","path":"/","code":"502","size":"568","referer":"-","agent":"Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"}
な感じでログがフォーマットにより解析されて、それがJSONとして書き込まれる模様
余談: 設定ファイルに関して
今回は/etc/td-agent/td-agent.confをそのままいじりましたけど、 http://fluentd.org/doc/config.html に普通にincludeも出来る模様なので、/etc/td-agent/conf.dとかに設定ファイルを書いてそれをincludeする方が良いのかなと