以前の記事で、monitいいね!なんて書いたので、
monitの設定を残しておく。
なお、バージョンは5.1.4である。
[monit.rc]
set daemon 30
set logfile syslog
set eventqueue basedir /var/monit slots 100
set mailserver smtp.gmail.com port 587
username XXX password XXX
using tlsv12 with timeout 30 seconds
set mail-format {
from: XXX@XXX
subject: Monit Alert ($HOST)
message: Monit
ACTION : $ACTION
SERVICE : $SERVICE
EVENT : $EVENT
at $DATE on $HOST.
DESCRIPTION : $DESCRIPTION
}
set alert XXX@XXX not on {
instance, action, exec
}
set httpd port 2812 and
use address 0.0.0.0
allow localhost
allow XXX.XXX.XXX.XXX/255.255.255.0
allow XXX:XXX
allow XXX:XXX read-only
include /etc/monit.d/*.rc
monit.d以下のファイル。
[disk.rc]
check device root with path /
if space usage > 80% for 5 times within 15 cycles then alert
if inode usage > 90% then alert
if space usage > 95% then stop
[net.rc]
check network eth0 interface eth0
[system.rc]
check system XXX
if cpu > 80% for 5 cycles then alert
if memory usage > 90% for 5 cycles then alert
[mariadb.rc]
check process mariadb with pidfile /var/run/mysqld/mysqld.pid
start program "/usr/bin/systemctl start mariadb.service"
stop program "/usr/bin/systemctl stop mariadb.service"
[maxscale.rc]
check process maxscale with pidfile /var/run/maxscale/maxscale.pid
start program "/usr/bin/systemctl start maxscale.service"
stop program "/usr/bin/systemctl stop maxscale.service"
ほんとはもっとあるけど、
重要なもののみとしました。
ポイントとしては、
「データを保持するものは、安易に再起動をかけない」
というところでしょうか。
mariadbについては、今回レプリケーションを組んでいる関係上、
落ちた場合の即再起動が、逆に悪影響を及ぼす可能性があるためです。
あとは、うまいこと通知をいれること、
monit自体のプロセス監視などをいれておくことも大事です。
現状、以下2つのcron処理において、
- monitプロセスの死活監視および再起動
- monitの再監視設定
を行うようにしています。
*/5 * * * * /usr/bin/pgrep "monit" || /usr/bin/systemctl start monit > /dev/null 2>&1
7 * * * * /usr/bin/pgrep "monit" && /usr/bin/monit monitor all > /dev/null 2>&1
やはり、m/monitと連動させたいな。。