EC2上でmonitを使ってApacheを自動再起動化

            こんにちは、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のログを投げるようにしたり)

 

それでは良い自動化ライフを〜