====== Fluentdでログ収集 ======
===== インストール =====
リポジトリ追加
# vi /etc/yum.repos.d/td.repo
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
gpgcheck=0
インストール
# yum -y install td-agent
===== [ローカル]ログファイル ⇒ [ローカル]ログファイル =====
設定ファイル修正
# cp /etc/td-agent/td-agent.conf /etc/td-agent/td-agent.conf.org
# vi /etc/td-agent/td-agent.conf
type file
path /var/log/fluent/access_log
ログファイル保存場所
# mkdir /var/log/fluent
# chown td-agent:td-agent /var/log/fluent
パーミッション変更(グループに読取・実行権限付与)
# chmod g+rx /var/log/httpd
Fluentdスタート
# /etc/init.d/td-agent start
Starting td-agent: [ OK ]
アクセスログ確認
# tail /var/log/fluent/access_log.20130131.b4d49ecf89504b484
2013-01-31T16:28:03-08:00 apache.access {"host":"192.168.26.1","user":"-","method":"GET","path":"/pma/js/jquery/jquery.qtip-1.0.0-rc3.js?ts=1356015781","code":"304","size":"-","referer":"http://192.168.26.143/pma/","agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17"}
===== [ローカル]ログファイル ⇒ [ローカル]MongoDB =====
FluentdのMogoDBプラグインインストール
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-mongo
Fetching: fluent-plugin-mongo-0.6.13.gem (100%)
Successfully installed fluent-plugin-mongo-0.6.13
1 gem installed
Installing ri documentation for fluent-plugin-mongo-0.6.13...
Installing RDoc documentation for fluent-plugin-mongo-0.6.13...
設定ファイル修正
# cp /etc/td-agent/td-agent.conf /etc/td-agent/td-agent.conf.file
# vi /etc/td-agent/td-agent.conf
type mongo
# DB名「apache」のコレクション「access」に保存
database apache
collection access
# MongoDB接続先とポート
host localhost
port 27017
#インターバル
flush_interval 10s
Fluentdスタート
# /etc/init.d/td-agent restart
Shutting down td-agent: [ OK ]
Starting td-agent: [ OK ]
MongoDBにログが登録されたことを確認
# mongo
MongoDB shell version: 2.2.2
connecting to: test
> show dbs
apache 0.203125GB
local (empty)
> use apache
switched to db apache
> show collections
access
system.indexes
> db.access.findOne()
{
"_id" : ObjectId("510b0daeddfe4129a7000001"),
"host" : "192.168.26.1",
"user" : "-",
"method" : "GET",
"path" : "/pma/",
"code" : "200",
"size" : "6789",
"referer" : "-",
"agent" : "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17",
"time" : ISODate("2013-02-01T00:34:50Z")
}
===== [リモート]ログファイル ⇒ [ローカル]MongoDB =====
リモート環境にFluentdをインストールして、設定ファイル編集
# vi /etc/td-agent/td-agent.conf
type forward
host 192.168.26.143
port 24224
flush_interval 10s
リモート環境でFluentdスタート
# /etc/init.d/td-agent start
Starting td-agent: [ OK ]
ローカル環境にFluentdをインストールして、設定ファイル編集
# vi /etc/td-agent/td-agent.conf
+)
ローカル環境でFluentdリスタート
# /etc/init.d/td-agent restart
Shutting down td-agent: [ OK ]
Starting td-agent: [ OK ]
===== td-agent.conf -- input部のサンプル =====
以下のフォーマットの場合のfluentdのformat定義
LogFormat "%h %A %t \"%m %U %H\" %>s %b \"%q\" %{OPENSOCIAL_VIEWER_ID}n \"%{Referer}i\" \"%{User-Agent}i\"" combined
とりあえずログに残す場合は、以下の定義で。
format /^(?.*)$/
===== td-agent.conf -- output部のサンプル =====
一つの入力を複数の出力に渡す
type copy
# MongoDB
type mongo
database apache
collection accesslog
host localhost
port 20000
flush_interval 10s
# to Manage
type forward
host 192.168.0.1
port 24224
flush_interval 10s
===== Tips =====
* [[http://fluentd.org/|公式]]
* [[http://docs.fluentd.org/articles/quickstart|公式Document]]
* [[http://fluentular.herokuapp.com/|Fluentular]]
Fluentdのregexpのテストが可能
* [[https://gist.github.com/vananasian/4215057|fluentdでapacheのログ集約]]
* fluentdでログを収集する際には、正規表現によるパースでCPUが喰われる。
* [[http://d.hatena.ne.jp/studio3104/20120824/1345795228|fluent-agent-lite と td-agent で、小さくはじめる fluentd]]
* [[http://blog.livedoor.jp/sonots/archives/24617519.html|fluent-agent-lite と fluentd agent の比較(1) 〜 Haikanko OSS化への道(2)]]
* [[http://blog.livedoor.jp/sonots/archives/24617573.html|fluent-agent-lite と fluentd agent の比較(2) 〜 Haikanko OSS化への道(2)]]
* [[http://d.hatena.ne.jp/tagomoris/20120314/1331716214|#fluentd 用ログ収集専用のエージェント fluent-agent-lite 書いた]]