fluentdでサーバ間通信
めちゃくちゃいまさら感があるけどfluentdの勉強
今回はwebサーバ(送信側)、logサーバ(受信側)で分けてみます
構成
- 送信側
- 192.168.60.11
- 192.168.60.12
- 受信側
- 192.168.60.13
環境はCentOS6.4
インストール,起動
シェルスクリプト一発でインストールできてしまうらしい。
ログの送信側と受信側でインストールします。
curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh /etc/init.d/td-agent start
ログ送信側(192.168.60.11, 192.168.60.12)
<source> type tail format apache2 path /var/log/httpd/access_log pos_file /var/log/td-agent/pos.httpd tag apache.access </source> <match apache.access> type forward <server> host 192.168.60.13 port 24224 </server> flush_interval 60s </match>
sourceディレクティブ
ログの取り込みの設定を行う
- format
- 取り込むログのフォーマット、今回はapacheのログなので用意されている(apache2)を指定
- path
- 取り込むログファイル
- pos_file
- どこまで取り込んだかを記述しておくファイル
- tag
- fluentd側の識別子みたいな感じ
matchディレクティブ
出力先の設定を行う
sourceディレクティブのtagで指定した名前にマッチしたものの出力の設定(この場合apache.access)
- type
- forwardで転送、fileでファイルへ出力
- server ( forwardで転送先を指定したら転送先のサーバの設定を行う )
- host
- 転送先のホスト
- port
- 転送先のポート
- host
- flush_interval
- 何秒毎にログを転送するか、、、かな
ログ受信側(192.168.60.13)
<source> type forward port 24224 </source> <match apache.access> type file path /var/log/httpd/access.log time_slice_format %Y%m%d time_slice_wait 10m </match>
sourceディレクティブ
受信用の設定、もちろん送信元の設定でも同じポートを指定する(24224)
- type
- forwardで他サーバから転送されたものを取り込む
- port
- 空けておくポートを指定する
matchディレクティブ
受け取ったログの出力先の設定
送信側で設定したtag名がそのまま使えるよう、sourceでtagを付け替えとかできたりするのかな。。
- type
- fileを設定したのでファイルに出力
- path
- 出力するパス
- time_slice_format
- format毎にファイルを生成する
- time_slice_wait
- この期間ごとに書き出しする....?
上記設定で無事受け取り側にログを収集することができました
こんな感じ
ls /var/log/httpd/ access.log.20140727_0.log
基本的にはsourceディレクティブでインプット、matchディレクティブでアウトプットって感じでしょうか
実際にやってみてイメージわきやすかったけど何度か「Permission denied」で躓いた。
ログの権限あたりでちゃんと設定しないとうまくいかないので気をつける