愚痴
何もかも面倒なので自分に依存しているものをなくした。 最初からこうしておけば良かった。 死活監視に eye を使ってみたのでメモ。
概要
bluepill や god のようなプロセス監視。 こいつらが不安定なので堅牢なのを作ったとのこと。 バックエンドに Celluloid を使っている。
導入
プロジェクトの Gemfile に追加した。
gem "eye"
設定
死活監視だけしたかったので最小限で書く。 working_dir を設定しないとうまく動かなかった。 ログも絶対パスで書く必要があった。
WORKING_DIR = File.expand_path(__dir__) Eye.config do logger File.join(WORKIND_DIR, eye.log) end Eye.application "hoge" do working_dir WORKING_DIR process "sinatra" do pid_file 'sinatra.pid' start_command 'bundle exec rackup -D -P ./sinatra.pid -p 7654 config.ru' end end
運用
サブコマンドはだいたい省略できるけど l
でロードとか狂ってるので load
って書きたい。
check
で設定ファイルのチェックもしてくれる。
設定の読み込み
$ bundle exec eye check hoge.eye $ bundle exec eye load hoge.eye
プロセスの起動、再起動、停止
対象も省略して書ける。hoge
(hoge以下全て)、hoge:sinatra
(hoge:sinatraのみ)、sinatra
(sinatraという名前のプロセス全て)、s
(sが付くの全て) とかのように好きな感じで。
一個しか管理してないので all
と書いてもいい。
$ bundle exec eye start all $ bundle exec eye restart all $ bundle exec eye stop all
モニタリング
プロセスの状況は info
で見る。
$ bundle exec eye info hoge sinatra ......................... up (01:18, 0%, 3Mb, <92627>)
whach -n 1 bundle exec eye i
とかしておくとべんり。
雑なまとめ
これで落ちても勝手に再起動してくれる。ダウンタイムとかどうでもいいアプリだとこれでいい。 そんなに流行ってなさそうだけどどうなのだろう。ビジネスに直結しないものなのでモダンなのを使っておいた。 今回は設定してないけど、当然プロセスの監視方法とか項目の設定、再起動方法など bluepill とかが出来ることはだいたい出来そうです。 名前が一般名詞だけれど god よりかはイケてると思う。