monit を導入する
monitは、サービスを監視してサービスがダウンしていたら、サービス復旧を自動で行うツール
ダウンロードできるか確認
yum list available | grep monit
monit をインストール
yum install monit
設定ファイルをいじるので原本をコピー
/etc/monit.confもしくは/etc/monitrc
cp -p /etc/monit.conf /etc/monit.conf_org
※centOS7.x系では設定ファイル名は monitrc
systemctl start monit
設定ファイルの編集
vi /etc/monit.conf
起動しているか(monitの状態確認)
monit summary
もしくは
monit status
結果:起動していない
Monit: the monit daemon is not running
monit を起動させる(centOS6.x系)
service monit start
monit を起動させる(centOS7.x系)
monit のログ(デフォルト)
cat /var/log/monit
monitの設定ファイル(monit.conf など) を見ると、include /etc/monit.d/ 以下のファイルがインクルードされているのが分かる
# Include all files from /etc/monit.d/
include /etc/monit.d/*
監視対象のデーモンは /etc/monit.d/ に個別にファイルを作ればいい。
crond の監視をする場合、下記の内容で crond.conf というファイル名にして /etc/monit.d の直下に置く
check process crond with pidfile /var/run/crond.pid
start program = "/bin/systemctl start crond"
stop program = "/bin/systemctl stop crond"
if 5 restarts within 5 cycles then unmonitor
古いシステムの場合はこう
start program = "/etc/init.d/crond start"
stop program = "/etc/init.d/crond stop"
mariadb(mysqld)はこれ
check process mysqld with pidfile /var/run/mariadb/mariadb.pid
start program = "/bin/systemctl start mysqld"
stop program = "/bin/systemctl stop mysqld"
if 5 restarts within 5 cycles then unmonitor
古いシステムでmysqlなら
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/etc/init.d/mysqld start"
stop program = "/etc/init.d/mysqld stop"
httpd(apache)はこれ
check process httpd with pidfile /var/run/httpd/httpd.pid
start program = "/bin/systemctl start httpd"
stop program = "/bin/systemctl stop httpd"
if 5 restarts within 5 cycles then unmonitor
古いシステムなら
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
メールの設定。monit.conf に書く
#yahooメールの送信サーバーを指定
set mailserver localhost
#アラートメールの内容
set mail-format {
from: monit@example.com
subject: $HOST : $SERVICE - $EVENT
message: Monit
ACTION : $ACTION
SERVICE : $SERVICE
at $DATE on $HOST.
DESCRIPTION : $DESCRIPTION
}
#送信先
set alert 自分のメール1@yahoo.co.jp
set alert 自分のメール2@yahoo.co.jp
個別設定ファイルを作ったらシンタックスのチェックも忘れずに
monit -t
シンタックスに問題なければ設定を反映
monit reload
Reinitializing monit daemonと表示され初期化され、設定ファイルの再読み込みが行われる
サーバーが起動した際に monit も自動起動するか確認
———————————–
# chkconfig –list monit
monit 0:off 1:off 2:off 3:off 4:off 5:off 6:off
———————————–
run level 3 ~ 5 が on になっていれば自動起動する。↑これでは起動しない。
ちなみに mysqld の run level を確認すると 3~ 5 が on になっていた。
———————————-
#chkconfig –list mysqld
mysqld 0:off 1:off 2:off 3:on 4:on 5:on 6:off
———————————
monit を自動起動に設定する
———————————
chkconfig monit on
———————————
スクリプトにより unmonitor になった場合に monitor に戻すとき
———————————–
monit monitor all
———————————–
一時的に unmonitor するとき
———————————–
monit unmonitor crond
もしくは
monit unmonitor all
———————————–
一度 unmonitor になると自動で戻らないので cron で定期的に戻す
# 毎時0分に unmonit をリフレッシュ
0 * * * * /usr/bin/monit monitor all
マニュアルを開く
man monit