EC2にMonitをセットアップする
Monitとは指定したプロセスを監視して落ちていた場合に再起動を行なってくれるデーモンプロセスです。
DaemontoolsとSuperVisordと比べると設定が一番シンプルな気がします。
yumからインストール
$ sudo yum install monit # 確認 $ yum list installed | grep monit monit.i686 5.2.5-3.6.amzn1 @amzn-updates
設定ファイルを作成する
$ sudo vi /etc/monit.conf
set daemon 120 set logfile /var/log/monit.log set idfile /var/run/monit.id set eventqueue basedir /var/lib/monit/events # set the base directory where events will be stored slots 100 # optionally limit the queue size include /etc/monit.d/*
Monit起動
$ sudo /etc/init.d/monit start
# 確認 $ sudo /etc/init.d/monit status monit (pid 19378) を実行中...
ここまででセットアップ完了、1分くらいでいける。
次に監視対象となるプログラムをインストール。
監視対象のnginxをインストール
$ sudo yum install nginx # 確認 $ yum list installed | grep nginx nginx.i686 1:1.2.1-3.2.amzn1 @amzn-main
nginx監視用のmonit設定ファイルを作成
$ sudo vi /etc/monit.d/nginx.conf
check process nginx with pidfile /var/run/nginx.pid start program = "/etc/init.d/nginx start" stop program = "/etc/init.d/nginx stop"
Monit 再起動
$ sudo /etc/init.d/monit restart
Nginxを止めて動作確認
$ sudo /etc/init.d/nginx stop nginx を停止中: [ OK ] $ sudo /etc/init.d/nginx status nginx は停止しています
ログをtailで確認しているとnginxが動いていないのを検知して再起動を行う
$ sudo tail -f /var/log/monit [UTC Dec 20 09:44:30] error : 'nginx' process is not running [UTC Dec 20 09:44:30] info : 'nginx' trying to restart [UTC Dec 20 09:44:30] info : 'nginx' start: /etc/init.d/nginx
Nginxが立ち上がっているか確認
$ sudo /etc/init.d/nginx status nginx (pid 19680) を実行中...
以上、簡単ですね。