Kibanaでkibana-daemon.rbを実行する時にはまった話
もともとはkibanaインストールディレクトリ内に、sample/kibana
が存在していて、これを/etc/init.d/
向けに使おうとしたときにはまった話。
試しに実行してみる。
$ cd sample $ ./kibana start $
ところが、何も起こらない。
$ ps -ef | grep kibana $
特に何も表示されない。内部ではkibana-daemon.rb
を実行しているみたい。
仕方ないので色々調べてみましたが、そもそもrubyを知らないので、解析するのにえらく時間がかかりました…。
ruby kibana-daemon.rb start fails siliently
これによると、-t
オプションで詳細出力することができるみたいです。
$ cd ../ $ ruby kibana-daemon.rb -t
以下出力結果:
/usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/pidfile.rb:94:in `initialize': No such file or directory - /usr/local/Kibana/tmp/kibana.pid (Errno::ENOENT) from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/pidfile.rb:94:in `open' from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/pidfile.rb:94:in `pid=' from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/application.rb:211:in `block in start_proc' from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/application.rb:264:in `call' from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/application.rb:264:in `start_proc' from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/application.rb:296:in `start' from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/controller.rb:70:in `run' from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons.rb:197:in `block in run_proc' from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/cmdline.rb:109:in `call' from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/cmdline.rb:109:in `catch_exceptions' from /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons.rb:196:in `run_proc' from kibana-daemon.rb:25:in `<main>'
/usr/local/Kibana/tmp/kibana.pid
ファイルを作ることができないらしい。というかtmpディレクトリがない…。ということで作成。
$ mkdir sample/tmp
これで起動できるようになりました。
$ cd sample $ ./kibana start pid-file for killed process 4417 found (/usr/share/kibana/tmp/kibana.pid), deleting.
あとは、このファイルを/etc/init.d/
配下に置いておけばいいかな。
以下余談:
最初はrubyのデバッグ出力をしてみていましたが、よく分かりませんでした。
$ ruby -d kibana-daemon.rb
Exception `LoadError' at /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems.rb:1082 - cannot load such file -- rubygems/defaults/operating_system Exception `LoadError' at /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems.rb:1091 - cannot load such file -- rubygems/defaults/ruby Exception `LoadError' at /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45 - cannot load such file -- daemons /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/daemonize.rb:59: warning: assigned but unused variable - sess_id /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/daemonize.rb:102: warning: assigned but unused variable - pid /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/application.rb:337: warning: mismatched indentations at 'end' with 'def' at 326 /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/application_group.rb:80: warning: assigned but unused variable - pid Exception `ArgumentError' at /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/daemonize.rb:137 - The given fd is not accessible because RubyVM reserves it Exception `ArgumentError' at /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/daemonize.rb:137 - The given fd is not accessible because RubyVM reserves it Exception `ArgumentError' at /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/daemonize.rb:137 - The given fd is not accessible because RubyVM reserves it Exception `ArgumentError' at /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/daemonize.rb:137 - The given fd is not accessible because RubyVM reserves it Exception `Errno::EBADF' at /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/daemons-1.1.9/lib/daemons/daemonize.rb:137 - Bad file descriptor
「rubygems/defaults/operating_system」がないとかでエラーになるのは、特に問題ないらしいです。
Ruby 1.9.2とRubyGems 1.3.7とGem.pathの消失 - \ay diary