[Sy] td-agent(fluentd)がchkconfigで自動起動の設定をしているのに起動しない場合の対処
2015/07/14
chkconfigで自動起動をOnにしてるのにも関わらず、td-agent
が起動しなかったので調べました。
ログを見る
とにかくログを見てみます。
2015-07-14 01:57:13 +0900 [error]: unexpected error error_class=Mongo::ConnectionFailure error=#<Mongo::ConnectionFailure: Failed to connect to a master node at localhost:27017>
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/mongo-1.8.6/lib/mongo/mongo_client.rb:463:in `connect'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/mongo-1.8.6/lib/mongo/mongo_client.rb:645:in `setup'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/mongo-1.8.6/lib/mongo/mongo_client.rb:126:in `initialize'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluent-plugin-mongo-0.7.3/lib/fluent/plugin/out_mongo.rb:213:in `new'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluent-plugin-mongo-0.7.3/lib/fluent/plugin/out_mongo.rb:213:in `get_connection'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluent-plugin-mongo-0.7.3/lib/fluent/plugin/out_mongo.rb:190:in `get_or_create_collection'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluent-plugin-mongo-0.7.3/lib/fluent/plugin/out_mongo.rb:85:in `start'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/match.rb:40:in `start'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/engine.rb:263:in `block in start'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/engine.rb:262:in `each'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/engine.rb:262:in `start'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/engine.rb:213:in `run'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/supervisor.rb:464:in `run_engine'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/supervisor.rb:135:in `block in start'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/supervisor.rb:250:in `call'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/supervisor.rb:250:in `main_process'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/supervisor.rb:225:in `block in supervise'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/supervisor.rb:224:in `fork'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/supervisor.rb:224:in `supervise'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/supervisor.rb:128:in `start'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/lib/fluent/command/fluentd.rb:164:in `<top (required)>'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.55/bin/fluentd:6:in `<top (required)>'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/bin/fluentd:23:in `load'
2015-07-14 01:57:13 +0900 [error]: /usr/lib64/fluent/ruby/bin/fluentd:23:in `<top (required)>'
2015-07-14 01:57:13 +0900 [error]: /usr/sbin/td-agent:7:in `load'
2015-07-14 01:57:13 +0900 [error]: /usr/sbin/td-agent:7:in `<main>'
2015-07-14 01:57:13 +0900 [info]: shutting down fluentd
2015-07-14 01:57:13 +0900 [info]: process finished code=0
2015-07-14 01:57:13 +0900 [warn]: process died within 1 second. exit.
MongoDBに接続に失敗しているみたいです。
さてはMongoDBが起動する前にtd-agentが起動しちゃってるのかな?と予想。
chkconfigは起動順を指定できるということを聞いたことあるような気がしたので確認してみる。
chkconfigの起動順(優先度)を確認
td-agentの優先度を/etc/init.d/td-agent
を見て確認してみると、
# chkconfig: - 80 20
同様にmongodの優先度を/etc/init.d/mongod
で確認。
# chkconfig: 35 85 15
2つ目の数字が小さいほど先に起動するので比較してみると、
- td-agent: 80
- mongod: 85
となっていて、td-agentの後にmongodが起動している ことがわかります。
td-agentの起動順を変更
/etc/init.d/td-agent
を以下のように変更して再起動してみましたが、
# chkconfig: - 80 20
↓
# chkconfig: - 90 20
・・・だめだ!うまく設定が反映されてないっぽい。
chkconfigについてもうちょっと調べてみる
ということでchkconfig
についてもうちょっと調べてみると、起動時の優先度は、/etc/rc.d/rc3.d/
配下にシンボリックリンクが作られることで実現されている らしいということを知ったので見てみます。
$ cd /etc/rc.d/rc3.d/
$ ls
・
・
・
lrwxrwxrwx 1 root root 18 Jul 12 13:41 S80td-agent -> ../init.d/td-agent
lrwxrwxrwx 1 root root 16 Dec 21 2014 S85mongod -> ../init.d/mongod
・
・
・
なるほど。td-agentは80だったのでS80td-agent
に、mongodは85なのでS85mongod
になってる。Sxx
の部分が優先度の数字に同じになるみたいですね。
てことはさっきの修正がシンボリックリンクの名前に反映されてないってことが問題なはず。
シンボリックリンクの名前を更新
$ sudo chkconfig --add td-agent
で反映できるみたいなので実行。その後もう一度見てみると、
・
・
・
lrwxrwxrwx 1 root root 16 Dec 21 2014 S85mongod -> ../init.d/mongod
・
・
lrwxrwxrwx 1 root root 18 Jul 14 02:14 S90td-agent -> ../init.d/td-agent
・
・
・
反映されました!これで再起動すればいけるはず。
再起動⇒無事解決!
再起動後、プロセスを確認してみると。
$ ps ax | grep td-agent
1170 ? Sl 0:00 /usr/lib64/fluent/ruby/bin/ruby /usr/sbin/td-agent --group td-agent --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid
1173 ? Sl 0:00 /usr/lib64/fluent/ruby/bin/ruby /usr/sbin/td-agent --group td-agent --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid
無事起動に成功しました!