2台のサーバを準備します
server-a(192.168.1.14)・・・apacheおよびfluentdのインストール
server-b(192.168.1.15)・・・fluentdのインストール
※今回はVMware上の仮想マシン2台で試しました
server-a から server-b に対して apache のログを転送してみます
fluentdのインストールは下記を参照してください
http://kakakikikeke.blogspot.jp/2012/07/fluentd.html
server-a(192.168.1.14)・・・apacheおよびfluentdのインストール
server-b(192.168.1.15)・・・fluentdのインストール
※今回はVMware上の仮想マシン2台で試しました
server-a から server-b に対して apache のログを転送してみます
fluentdのインストールは下記を参照してください
http://kakakikikeke.blogspot.jp/2012/07/fluentd.html
■設定
■server-b(受信側)
vim /etc/fluent/fluent.conf
起動後エラーが表示されないことを確認する
■server-a(送信側)
vim /etc/fluent/fluent.conf
起動後エラーが表示されないことを確認する
として server-a および server-b で fluentd を起動してき server-a の apache にアクセスするとserver-b 側の /var/log/fluent/access_log にログが出力されます
server-a と server-b の fluentd のプロセスですが、server-b を先に起動したほうがいいです
server-b を先に起動しないと server-a が転送先のサーバを見つけれられずに
2013-07-05 11:34:35 +0900 [info]: detached forwarding server 'server-b' host="192.168.1.15" port=24224 hard_timeout=true
となり転送できません
上記が発生した場合は送信側のfluentdのプロセスを再起動してあげないとダメです
vim /etc/fluent/fluent.conf
<source> type forward port 24224 </source> <match apache.access> type file path /var/log/fluent/access_log </match>fluentd
起動後エラーが表示されないことを確認する
■server-a(送信側)
vim /etc/fluent/fluent.conf
<source> type tail format apache path /var/log/httpd/access_log pos_file /var/log/fluent/messages.pos tag apache.access </source> <match apache.access> type forward flush_interval 5s <server> name server-b host 192.168.1.15 port 24224 weight 60 </server> </match>fluentd
起動後エラーが表示されないことを確認する
として server-a および server-b で fluentd を起動してき server-a の apache にアクセスするとserver-b 側の /var/log/fluent/access_log にログが出力されます
server-a と server-b の fluentd のプロセスですが、server-b を先に起動したほうがいいです
server-b を先に起動しないと server-a が転送先のサーバを見つけれられずに
2013-07-05 11:34:35 +0900 [info]: detached forwarding server 'server-b' host="192.168.1.15" port=24224 hard_timeout=true
となり転送できません
上記が発生した場合は送信側のfluentdのプロセスを再起動してあげないとダメです
■通信要件
詳しくはちょっとわからなかったのですが、双方向でTCPおよびUDP通信できないといけないポートがあるようです
(UDPは死活監視で使っているようです)
今回は server-a と server-b 間はお互いに全開放状態にしました
また、VM間同士だとUDP問題がありうまく動かない現象もあるようです
http://ameblo.jp/nidbooks/entry-11240865520.html
http://blog.chrhsmt.com/2013/01/fluentd.php
http://d.hatena.ne.jp/oranie/20120323/1332498317
上記、UDP問題の場合は以下ようなエラーが表示されるようです
起動後にしばらく置いておくと送信側で発生します
2013-07-05 11:39:40 +0900 [warn]: temporarily failed to flush the buffer. next_retry=2013-07-05 11:39:40 +0900 error_class="RuntimeError" error="no nodes are available" instance=167157580
今回の検証はVMware上でしたが、やはり上記のエラーがでました
動作的には「不安定」といった感じでfluentdの起動直後はうまく転送できるのですが、ある程度時間が経つと上記エラーが発生し以降はうまく転送されなくなるといった感じでした
UDPパケットに無理矢理データを追加して小さいUDPを送らないようにするといった方法もあるようですが現状根本解決には至ってないようです
https://gist.github.com/seraphr/4586164
(UDPは死活監視で使っているようです)
今回は server-a と server-b 間はお互いに全開放状態にしました
また、VM間同士だとUDP問題がありうまく動かない現象もあるようです
http://ameblo.jp/nidbooks/entry-11240865520.html
http://blog.chrhsmt.com/2013/01/fluentd.php
http://d.hatena.ne.jp/oranie/20120323/1332498317
上記、UDP問題の場合は以下ようなエラーが表示されるようです
起動後にしばらく置いておくと送信側で発生します
2013-07-05 11:39:40 +0900 [warn]: temporarily failed to flush the buffer. next_retry=2013-07-05 11:39:40 +0900 error_class="RuntimeError" error="no nodes are available" instance=167157580
今回の検証はVMware上でしたが、やはり上記のエラーがでました
動作的には「不安定」といった感じでfluentdの起動直後はうまく転送できるのですが、ある程度時間が経つと上記エラーが発生し以降はうまく転送されなくなるといった感じでした
UDPパケットに無理矢理データを追加して小さいUDPを送らないようにするといった方法もあるようですが現状根本解決には至ってないようです
https://gist.github.com/seraphr/4586164
P.S 20130707
どうやらgithub本体でも問題視されておりUDPではなくTCPでheartbeatできる修正パッチが作られているようです
https://github.com/fluent/fluentd/pull/74
まだ試してませんが、これを使えばVM上での問題は解決できるかもしれません
https://github.com/fluent/fluentd/pull/74
まだ試してませんが、これを使えばVM上での問題は解決できるかもしれません
0 件のコメント:
コメントを投稿