httpdやmysqldを監視するmonitを導入する

monit を導入する

ダウンロードできるか確認
-----------------------------------
yum list available | grep monit
-----------------------------------

monit をインストール
-----------------------------------
yum install monit
-----------------------------------

設定ファイルをいじるので原本をコピー
-----------------------------------
cp -p /etc/monit.conf /etc/monit.conf_org
-----------------------------------
※centOS7.x系では設定ファイル名は monitrc

起動しているか(monitの状態確認)
-----------------------------------
monit summary
-----------------------------------

もしくは

-----------------------------------
monit status
-----------------------------------

結果:起動していない
-----------------------------------
Monit: the monit daemon is not running
-----------------------------------

monit を起動させる(centOS6.x系)
-----------------------------------
service monit start
-----------------------------------

monit を起動させる(centOS7.x系)
-----------------------------------
systemctl start monit
-----------------------------------

設定ファイルの編集
-----------------------------------
vi /etc/monit.conf
-----------------------------------

monit のログ(デフォルト)
-----------------------------------
cat /var/log/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 = "/etc/init.d/crond start"
stop program = "/etc/init.d/crond stop"
if 5 restarts within 5 cycles then unmonitor
-----------------------------------

mysqldはこれ
-----------------------------------
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/etc/init.d/mysqld start"
stop program = "/etc/init.d/mysqld stop"
if 5 restarts within 5 cycles then unmonitor
-----------------------------------

httpd(apache)はこれ
-----------------------------------
check process httpd with pidfile /var/run/httpd/httpd.pid
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if 5 restarts within 5 cycles then unmonitor
-----------------------------------

メールの設定。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 自分のメール@yahoo.co.jp
-----------------------------------

個別設定ファイルを作ったらシンタックスのチェックも忘れずに
-----------------------------------
monit -t
-----------------------------------

シンタックスに問題なければ設定を反映
-----------------------------------
monit reload
-----------------------------------

サーバーが起動した際に 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 で定期的に戻す
-----------------------------------
#60分ごとに unmonit をリフレッシュ
*/60 * * * * /usr/bin/monit monitor all
-----------------------------------

マニュアルを開く
-----------------------------------
man monit
-----------------------------------