以前の記事で、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と連動させたいな。。