アプリケーションサーバとログ収集サーバに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 2
| $ sudo launchctl stop td-agent $ sudo launchctl start td-agent
|
以下でFluentdにリクエストします。
1
| $ curl -X POST -d 'json={"json":"message"}' http:
|
/var/log/td-agent/td-agent.log にログが出力されているはずです。
1 2
| $ tail -n 1 /var/log/td-agent/td-agent.log 2016-07-01 16:51:47 -0700 debug.test: {"json":"message"}
|
ログ収集サーバにFluentdをインストール
次にログ収集サーバにFluentdをインストールします。
OSはCentos6.5を使いました。
vagrantの使い方は割愛します。
networkはprivate_networkとし、192.168.33.10でアクセスできることとします。
以下でログ収集サーバにログインします。
1 2 3 4 5 6 7 8 9 10
| $ vagrant ssh
# iptablesは無効にしておきます $ sudo service iptables stop
# 以下のコマンドでFluentdインストールします。 $ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
# Fluentdを起動します $ sudo /etc/init.d/td-agent start
|
ログ収集サーバでも同じように確認してみます。
1 2 3
| $ curl -X POST -d 'json={"json":"message"}' http: $ tail -n 1 /var/log/td-agent/td-agent.log 2016-07-01 16:51:47 -0700 debug.test: {"json":"message"}
|
アプリケーションサーバからログ収集サーバのFluentdにリクエストを送る
アプリケーションサーバからログ収集サーバのFluentdにリクエストを送れるかを確認します。
1
| $ curl -X POST -d 'json={"json":"message"}' http:
|
ログ収集サーバでログを確認します。
Fluentdは出力をバッファするのでフォワードされるまでにタイムログがある場合があります。
1
| $ tail -n 1 /var/log/td-agent/td-agent.log
|
疎通を確認できたら、アプリケーションサーバからログ収集サーバのFluentdにログをforwardしてみましょう。
アプリケーションサーバの/etc/td-agent/td-agent.conf を以下のように編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <source> type http port 8888 </source>
<source> @type forward port 24224 </source>
# tagがvagrantの場合はvagrantのFluentdにフォワードする <match tag vagrant.**> type forward <server> host 192.168.33.10 port 24224 </server> </match>
<match debug.**> type stdout </match>
|
ログ収集サーバの/etc/td-agent/td-agent.confに以下の設定を追加します。
tagがvagrantで送られてきたものをログに出力します。
1 2 3
| <match vagrant.**> type stdout </match>
|
以下のコマンドでログ収集サーバのFluentdにデータがフォワードされます。
1
| $ curl -X POST -d 'json={"json":"Fluentd!!!"}' http:
|
以上で基本的なフォワードの設定ができました。
ファイルを監視してログ収集サーバにフォワードする
次はファイルを監視してファイルにデータが追加されたらその内容をログ収集サーバにフォワードするようにします。
in_tailプラグインを使います。
in_tailプラグインを使うにはtypeにtailを使います。
アプリケーションサーバの/etc/td-agent/td-agent.confに以下を追記します。
1 2 3 4 5 6 7
| <source> type tail path /tmp/access_log tag vagrant.access_log pos_file /tmp/access_log.pos format none </source>
|
設定を反映させるには、以下のコマンドで行います。
1 2
| $ sudo launchctl stop td-agent $ sudo launchctl start td-agent
|
/tmp/access_log に追記してみましょう。
1
| $ echo "hello" >> /tmp/access_log
|
すると、ログ収集サーバのFluentdに内容がフォワードされます。
参考リンク