keepalivedの検証をするときにわざわざリモートのサーバにssh してsyslogをtailfするのがめんどうだったので、ローカルで監視できたらなとふと思い立ったので試してみました。
インストール
64bitのDebian lennyはバイナリのパッケージがあるのでaptitude installで入るのですが、32bit版にはないのでrvm + gemで入れています。
収集元
source.listにレポジトリを加えて、インストールするだけです。簡単ですね。注意点はパッケージ名がtd-agentってところですかね。
% echo "deb http://packages.treasure-data.com/lenny/ lenny contrib" >> /etc/apt/sources.list % sudo aptitude update && sudo aptitude install td-agent
収集先
32bitなのでパッケージから入れられないのでgemで入れてます。rvmの導入はどっかでググってください。
% rvm use 1.9.2 % gem install fluentd
設定
収集元
/var/log/messagesの内容をcollector.localに転送する設定になっています。sourceディレクティブで出力元の設定、matchで一致したログに対する処理をな感じですね。
% cat /etc/td-agent/td-agent.conf <source> type tail path /var/log/messages tag syslog.messages format syslog </source> <match syslog.messages> type forward flush_interval 5s <server> host collector.local port 24224 </server> </match> <match **> type stdout </match>
収集先
実験なので適当な場所に設定ファイルをおいています。
リモートからのログを24224ポートで待ち受けています。ひとまず標準出力してます。
% cat ~/tmp/fluentd.conf <source> type forward port 24224 </source> <match syslog.messages> type stdout </match> <match **> type stdout </match>
起動
収集元
インストールし時点で立ち上がっているのでrestartしてあげます。
% /etc/init.d/td-agent restart
収集先
設定ファイルを指定して立ち上げます。
% fluentd --conf ~/tmp/fluentd.conf
確認
収集元
loggerコマンドでsyslogに出力してあげます。
% logger -t test test % tail -1 /var/log/messages May 20 21:39:24 test test: test
収集先
先ほど立ち上げたコンソールに以下のような出力ができていればログの転送が成功してます。
2012-05-20 21:39:24 +0900 syslog.messages: {"host":"test","ident":"test","message":"test"}
まとまらないよ。
32bit環境と64bit環境が入り交じっているので、ちょっと複雑になりましたが、インストールと設定は思ったより簡単にできました。
何よりパッケージで入るのが楽でいいですね。単純にログの集約だけでなく、統計情報の収集などいろいろ試しがいがありそうで楽しみです。
ちょこちょこpluginを試していきたいです。