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) を実行中...

以上、簡単ですね。