oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

#fluentd fluentd(td-agent)構築時に気をつけるポイントについて[2012/3/26 追記あり]


結構既出な内容ですが、思いっきりハマったので改めて。


●fluentd→fluentdの通信時にfowardを使おうとしたらエラーになる。

※追記
VMwareの場合はこっちを参考に。fluentdじゃなくてVMwareの問題というパターンもあり。
http://d.hatena.ne.jp/oranie/20121107/1352298768


中間fluentdから最終的に集約するfluentdにfowardでログを送ろうとすると、始めはちゃんと送れるのに、ちょっとするとログにエラーが出ていた。もちろん集約先の方ではログ受信出来なくなっている。

failed to flush the buffer, retrying. error="no nodes are available" 

もっと具体的にはこんなの。


で、理由は

なので、TCPしか受信側のfluentdと送受信出来なかったのが原因><
今回はfluentdが別々のセグメントにあり、間のFWでTCPしか許可していませんでした。UDPも許可したら無事解決!今はドキュメントにも

forward input plugin listens TCP socket to receive event stream, and also listens UDP socket to receive heartbeat message. 

としっかり記載して貰ったのでちゃんと読もうね!


●起動しようとしたらセグフォった・・・・・・・・ナニコレ・・・・


現象はそのまま。昨日までは・・・・何とも無かったのに・・・と。

/etc/init.d/td-agent restart
Shutting down td-agent:                                    [  OK  ]
Starting td-agent: <internal:lib/rubygems/custom_require>:29: [BUG] Segmentation fault
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
〜〜
中略
〜〜
[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

/bin/bash: line 1: 13867 アボートしました/usr/sbin/td-agent --user td-agent --group td-agent --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid

で理由はこれ!

インストール時に以下のファイルが生成されて本当は大丈夫なはずなんだけど、

 cat /etc/prelink.conf.d/td-agent-ruby.conf
-b /usr/lib64/fluent/ruby/bin/ruby
-b /usr/lib/fluent/ruby/bin/ruby

一部のサーバで入っていなかったせいで破壊されたっぽい。

なので、上記の内容を/etc/prelink.confに追記してあげた。これで多分大丈夫なはず!
[2012/3/26]
td-agent v1.1.3.1でprelink.conf.d/が無くて書き込めなかった場合に、
prelink.confに追記するように修正されていました!ありがとうございます!

●その他諸々

tailする時に参照先や参照先のシンボリックリンクを生成したけど、td-agentユーザーが権限無くて読めないのでエラーになったりとかの凡ミスも良くやりました><


構築時にちょっと気を付ける所はあるけど、構築しちゃえばそんな事は忘れる!fluentd良いですね!
みんなもガンガン入れて色々教えて下さい!><