アプリケーションサーバとログ収集サーバに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://localhost:8888/debug.test
/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://localhost:8888/debug.test
$ 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://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
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://localhost:8888/vagrant.test
以上で基本的なフォワードの設定ができました。
ファイルを監視してログ収集サーバにフォワードする
次はファイルを監視してファイルにデータが追加されたらその内容をログ収集サーバにフォワードするようにします。
in_tail
プラグインを使います。
in_tail
プラグインを使うにはtypeにtailを使います。
アプリケーションサーバの/etc/td-agent/td-agent.conf
に以下を追記します。
1
2
3
4
5
6
7
<source>
type tail # in_tailプラグインを指定
path /tmp/access_log # 監視するファイルの指定
tag vagrant.access_log # ログにつけるタグを指定
pos_file /tmp/access_log.pos # ファイル内のどの行までを読んだかを記録しておくファイルを指定
format none # フォーマットはnoneを指定
</source>
設定を反映させるには、以下のコマンドで行います。
1
2
$ sudo launchctl stop td-agent
$ sudo launchctl start td-agent
/tmp/access_log
に追記してみましょう。
1
$ echo "hello" >> /tmp/access_log
すると、ログ収集サーバのFluentdに内容がフォワードされます。
参考リンク