こんにちは、daihaseです。
今日はプロセス監視ツールのmonitを使ってApacheを自動で再起動させる仕組みを作ってみます。環境は色々あると思いますが、ここではAWS EC2(Amazon Linux)とします。
まずyumを使ってmonitをインストールします。
$ yum install monit
インストールが完了しましたら、設定ファイルを編集して自動化の設定を行なっていきます。monitの全体的な設定は/etc/monit.confにあるので、バックアップをとってから開いてみます。
$ cd /etc $ ll monit.conf -rw------- 1 root root 10893 Jul 26 11:04 monit.conf $ cp -p monit.conf monit.conf.bak #念のためバックアップ $ vi monit.conf
以下を追記します。
監視のインターバルを60秒にする。
set daemon 60
ログファイルの指定。こちら初期設定ではコメントされているので、外して有効化します。
set logfile /var/log/monit
次に監視するApache(httpd)用の設定ファイルを用意します。
include /etc/monit.d/* とすることで、monit.d/配下にプロセスごとに用意したファイル全てを読み込むようになるので便利です。
$ vi /etc/monit.d/httpd
設定ファイルの中身は以下のようにします。
check process apache with pidfile /var/run/httpd/httpd.pid start program = "/etc/init.d/httpd start" stop program = "/etc/init.d/httpd stop" if failed port 80 with timeout 10 seconds then restart if failed port 443 with timeout 10 seconds then restart if 30 restarts within 30 cycles then unmonitor
あとはmonitを起動します。
$ service monit start
これでhttpdが停止しても60秒ごとに監視するので、monitが自動でhttpdを再起動してくれます。 ログのある/var/log/monitをtailすればその様子が確認出来るでしょう。
今回はApacheの自動再起動の設定だけだったので、非常にシンプルに済ませていますが実際はもっと細かい設定が出来ます(AWSを使っているならCloudWatch Logsにmonitのログを投げるようにしたり)
それでは良い自動化ライフを〜