LoginSignup
16
16

More than 5 years have passed since last update.

Apache全プロセスの総利用メモリ量がしきい値を超えるとApacheプロセスを再起動させる

Last updated at Posted at 2015-11-13

概要

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のプロセスが再起動されました。

サーバー内でのプロセスの自動復旧や、
ログ中にある特定の文字列があるとプロセスの再起動など、お手軽に割と複雑な処理が自動化できます。

16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16