概要
Apache全プロセスの総利用メモリ量がしきい値を超えるとApacheプロセスを再起動させる
ご用意頂くもの
- epelのリポジトリ
- メール送信をするためのSMTPサーバー
準備
epelリポジトリの追加
コマンド
rpm -Uvh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# x86_64 CentOS 6 の場合
monitのインストール
コマンド
yum install monit
設定
monit全体の設定
/etc/monit.conf
set daemon 60
# monitの監視間隔(秒)
set logfile /var/log/messeges
# ディフォルトではSyslogが指定されていますが、私の環境ではうまく出力されなかったので明示的に記載
# logrotateの設定も忘れずに
set mailserver 127.0.0.1
# メール送信に利用するSMTPサーバーを指定
set alert hoge001@hogehoge.co.jp
set alert hoge001@hogehoge.co.jp
# アラート送信先メールアドレス
# 複数の通知先へメールを送信する場合は列挙する
set mail-format {
from: monit@hogehoge.com
# メール送信元アドレス
subject: $HOST : $SERVICE - $EVENT
message: Monit
ACTION : $ACTION
SERVICE : $SERVICE
at $DATE on $HOST.
DESCRIPTION : $DESCRIPTION
}
プロセス監視の設定
/etc/monit.d/httpd
check process httpd
with pidfile "/var/run/httpd/httpd.pid"
# httpdのPIDファイルの指定
start program "/etc/init.d/httpd start"
# 対象プロセスのスタートコマンドの指定
stop program "/etc/init.d/httpd stop"
# 対象プロセスのストップコマンドの指定
if totalmem > 1000.0 MB for 3 cycles then restart
# httpdのトータルメモリが1GBを3度こえると、httpdの再起動を実施
if 5 restarts within 5 cycles then unmonitor
# httpdの再起動に3回失敗したら、監視の停止
出来上がったものがこちらになります
サンプルメール
Monit
ACTION : restart
SERVICE : httpd
at Thu, 05 Nov 2015 11:13:00 on [$HOSTNAME].
DESCRIPTION : total mem amount of 2.0 GB matches resource limit [total mem amount<1.5 GB]
このように事前に設定した閾値を超えるとApacheのプロセスが再起動されました。
サーバー内でのプロセスの自動復旧や、
ログ中にある特定の文字列があるとプロセスの再起動など、お手軽に割と複雑な処理が自動化できます。