背景
- Eye を Unicorn の自動回復(autohealing)のために利用
-
Eye
はmonit
、Bluepill
、God
、supervisord
のようなプロセス監視ツール - Eye は起動時とか、終了時とかの絵文字がかわいい!癒される。
- Eye は Ruby の DSL !便利!
- monit はちょっと独自すぎて抵抗が・・・
-
eye info
やeye watch
などもなかなか便利。使える! - Eye を使って unicorn を管理してみた
Eyefile の例
Eyefile
# Eye 自身のログを保存
Eye.config do
logger __dir__ + "/log/eye.log"
end
rails_root = File.expand_path(__dir__)
Eye.application "MyApplication" do
working_dir rails_root
process "unicorn" do
load_env ".env"
unicorn_pid = "#{rails_root}/tmp/pids/unicorn.pid"
pid_file unicorn_pid
start_command %(sh -c '
./bin/unicorn -c config/unicorn.rb -E production -D;
')
# stop_signals [:QUIT, 10.seconds]
stop_command "kill -QUIT {PID}"
# graceful restart
restart_command %(sh -c '
kill -USR2 {PID}
until [ -f "#{unicorn_pid}.oldbin" ]; do
sleep 0.1
done
oldpid=$(cat #{unicorn_pid}.oldbin)
kill -WINCH $oldpid;
kill -QUIT $oldpid;
')
stdall "#{rails_root}/log/eye-unicorn.log"
end
end
利用手順
Eye の設定読み込み、Eye の設定に従って、起動
$ leye l
Eye started! ㋡
Config loaded!
㋡ は外国人からすると、顔文字に見えるらしい
leye
は eye コマンドの派生版。カレントディレクトリの Eyefile
を使い、
eye
の pid ファイルをカレントディレクトリの .eye/
に個別に管理する。
eye
だと $HOME/.eye/
に eye
の pid ファイルを保持する。
Eye の状況確認
$ leye i
MyApplication
unicorn ......................... starting
$ leye i
MyApplication
unicorn ......................... up (12:43, 0%, 79Mb, <3583>)
Eye の終了
$ leye q
Quit ಠ╭╮ಠ
クリッとした おめめ がかわいい