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
-----------------------------------
カテゴリー:CentOS, サーバートラブル・つながらない