右往左往ブログ

日々よりみち

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