Fluentdを使ってローカル環境にログ収集サーバを構築する
アプリケーションサーバとログ収集サーバにFluentdをインストールし、アプリケーションサーバからログ収集サーバにログをフォワードする方法を紹介します。
ここでは、アプリケーションサーバをMacOS X、ログ収集サーバをVagrantとします。
Fluentdをホストマシン(Mac)にインストール
.dmgをダウンロードしてインストールしてください。
以下でFluentdを起動します。
1 | $ sudo launchctl load /Library/LaunchDaemons/td-agent.plist |
Fluentdのログは /var/log/td-agent/td-agent.log
に出力されます。
1 | $ less /var/log/td-agent/td-agent.log |
停止は以下です。
1 | $ sudo launchctl unload /Library/LaunchDaemons/td-agent.plist |
設定ファイルは /etc/td-agent/td-agent.conf
です。
設定を反映させるには、以下のコマンドで行います。
1 | $ sudo launchctl stop td-agent |
以下でFluentdにリクエストします。
1 | $ curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test |
/var/log/td-agent/td-agent.log
にログが出力されているはずです。
1 | $ tail -n 1 /var/log/td-agent/td-agent.log |
ログ収集サーバにFluentdをインストール
次にログ収集サーバにFluentdをインストールします。
OSはCentos6.5を使いました。
vagrantの使い方は割愛します。
networkはprivate_networkとし、192.168.33.10でアクセスできることとします。
以下でログ収集サーバにログインします。
1 | $ vagrant ssh |
ログ収集サーバでも同じように確認してみます。
1 | $ curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test |
アプリケーションサーバからログ収集サーバのFluentdにリクエストを送る
アプリケーションサーバからログ収集サーバのFluentdにリクエストを送れるかを確認します。
1 | $ curl -X POST -d 'json={"json":"message"}' http://192.168.33.10:8888/debug.test |
ログ収集サーバでログを確認します。
Fluentdは出力をバッファするのでフォワードされるまでにタイムログがある場合があります。
1 | $ tail -n 1 /var/log/td-agent/td-agent.log |
疎通を確認できたら、アプリケーションサーバからログ収集サーバのFluentdにログをforwardしてみましょう。
アプリケーションサーバの/etc/td-agent/td-agent.conf
を以下のように編集します。
1 | <source> |
ログ収集サーバの/etc/td-agent/td-agent.conf
に以下の設定を追加します。
tagがvagrantで送られてきたものをログに出力します。
1 | <match vagrant.**> |
以下のコマンドでログ収集サーバのFluentdにデータがフォワードされます。
1 | $ curl -X POST -d 'json={"json":"Fluentd!!!"}' http://localhost:8888/vagrant.test |
以上で基本的なフォワードの設定ができました。
ファイルを監視してログ収集サーバにフォワードする
次はファイルを監視してファイルにデータが追加されたらその内容をログ収集サーバにフォワードするようにします。in_tail
プラグインを使います。in_tail
プラグインを使うにはtypeにtailを使います。
アプリケーションサーバの/etc/td-agent/td-agent.conf
に以下を追記します。
1 | <source> |
設定を反映させるには、以下のコマンドで行います。
1 | $ sudo launchctl stop td-agent |
/tmp/access_log
に追記してみましょう。
1 | $ echo "hello" >> /tmp/access_log |
すると、ログ収集サーバのFluentdに内容がフォワードされます。
参考リンク