ちなみに

火曜日の空は僕を押しつぶした。

eye 使った

愚痴

何もかも面倒なので自分に依存しているものをなくした。 最初からこうしておけば良かった。 死活監視に eye を使ってみたのでメモ。

概要

bluepill や god のようなプロセス監視。 こいつらが不安定なので堅牢なのを作ったとのこと。 バックエンドに Celluloid を使っている。

https://github.com/kostya/eye

導入

プロジェクトの 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 よりかはイケてると思う。