2013年7月6日土曜日

【fluentd】リモートホストにapacheのログを転送してみた

■概要
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-b(受信側)
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


P.S 20130707
どうやらgithub本体でも問題視されておりUDPではなくTCPでheartbeatできる修正パッチが作られているようです
https://github.com/fluent/fluentd/pull/74
まだ試してませんが、これを使えばVM上での問題は解決できるかもしれません

0 件のコメント:

コメントを投稿