fluentd + mongodb でmongodbのauthが通らない
MongoDBでreplica setを組んで、keyFileを使ってauthを有効にしている環境で、fluentd使ってログ投げ込もうとしたらauthが通らなかった。
もちろん db.system.users には roles が 'readWrite' なユーザのエントリあるし、そのユーザのuser/passをtd-agent.confにも書いた。
環境はこれ
MongoDB | 2.4.3 | |
fluentd | 1.1.13 | |
ruby | 1.9.3p194 | fluentdに付いてくる(?)やつ |
MongoDB ruby driver | 1.8.4 | 同上 |
fluentd-plugin-mongo | 0.7.0 | 同上 |
で、td-agent.logとか眺めると
2013-06-10 23:03:15 +0900 [warn]: temporarily failed to flush the buffer, next retry will be at 2013-06-10 23:03:21 +0900. error="can't convert Symbol into Hash" instance=70012152580060 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/mongo-1.8.4/lib/mongo/util/read_preference.rb:47:in `merge' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/mongo-1.8.4/lib/mongo/util/read_preference.rb:47:in `read_pool' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/mongo-1.8.4/lib/mongo/mongo_replica_set_client.rb:342:in `block in checkout_reader' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/mongo-1.8.4/lib/mongo/mongo_replica_set_client.rb:326:in `checkout' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/mongo-1.8.4/lib/mongo/mongo_replica_set_client.rb:341:in `checkout_reader' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/mongo-1.8.4/lib/mongo/db.rb:126:in `authenticate' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluent-plugin-mongo-0.7.0/lib/fluent/plugin/mongo_util.rb:15:in `authenticate' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluent-plugin-mongo-0.7.0/lib/fluent/plugin/out_mongo_replset.rb:54:in `get_connection' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluent-plugin-mongo-0.7.0/lib/fluent/plugin/out_mongo.rb:171:in `get_or_create_collection' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluent-plugin-mongo-0.7.0/lib/fluent/plugin/out_mongo.rb:107:in `write' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.33/lib/fluent/buffer.rb:290:in `write_chunk' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.33/lib/fluent/buffer.rb:274:in `pop' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.33/lib/fluent/output.rb:294:in `try_flush' 2013-06-10 23:03:15 +0900 [warn]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.33/lib/fluent/output.rb:121:in `run'
とか出てるので、そもそもauthが通らないではなくてfluentdの中で失敗してる感じ。
もっというと場所的にmongo driverっぽい。
ということでmongo driverを更新する。
このrubyはシステムに入っているものではなく、fluentdが引っ張ってくるものなので、更新する場所を間違えないようにする。
# /usr/lib64/fluent/ruby/bin/gem update --system Updating rubygems-update Fetching: rubygems-update-2.0.3.gem (100%) Successfully installed rubygems-update-2.0.3 Installing RubyGems 2.0.3 RubyGems 2.0.3 installed Installing ri documentation for rubygems-2.0.3RubyGems system software updated # /usr/lib64/fluent/ruby/bin/gem update mongo Updating installed gems Updating mongo Fetching: bson-1.8.6.gem (100%) Successfully installed bson-1.8.6 Fetching: mongo-1.8.6.gem (100%) Successfully installed mongo-1.8.6 Installing ri documentation for bson-1.8.6 Installing darkfish documentation for bson-1.8.6 Installing ri documentation for mongo-1.8.6 Installing darkfish documentation for mongo-1.8.6 Gems updated: bson mongo
mongo driverが1.8.4から1.8.6に更新された。
で、fluentdを上げてみてログを投げるような何かをする。
ログが投げられる。以上。