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

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
タイトルとURLをコピーしました