目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

lennyにfluentdを入れてsyslogを収集してみる

keepalivedの検証をするときにわざわざリモートのサーバにssh してsyslogをtailfするのがめんどうだったので、ローカルで監視できたらなとふと思い立ったので試してみました。

インストール

64bitのDebian lennyはバイナリのパッケージがあるのでaptitude installで入るのですが、32bit版にはないのでrvm + gemで入れています。

  • 収集元
    • host: test.local
    • os: Debian lenny 64bit
  • 収集先
    • host: collector.local
    • os: Debian lennly 32bit
収集元

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を試していきたいです。