以前の記事で、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と連動させたいな。。
コメントがあればどうぞ