レプリケーション監視

やりたいこと~監視ソフトを使わない簡単な監視~

Zabbixとか監視ソフト使えばできるのかも知れないが、もう個人サーバではCloudWatchを除く監視ソフト(ツール)は使わないことにした。
とにかく面倒くさい、監視設定って。
個人サーバでは重要サービスもないのでもっと簡単に楽にやりたい。ZabbixもNagiosももう見たくない。
なので現在は簡易スクリプトをSlave側のcronに仕込んで監視している。

監視スクリプト~レプリケーション監視~

mkdir -p  /usr/local/user01/bin
cat > /usr/local/user01/bin/mysql_repl_check.sh << 'EOF'
#!/bin/bash

set -e
set -u

mysql -uroot -p********* -e "SHOW SLAVE STATUS\G" | grep Slave_IO_Running: > /tmp/Slave_IO_Running
mysql -uroot -p********* -e "SHOW SLAVE STATUS\G" | grep Slave_SQL_Running: > /tmp/Slave_SQL_Running

less /tmp/Slave_IO_Running  | grep "Slave_IO_Running: Yes" || echo -e "repl_error.\nplease check master and slave." | mail -s "repl_error" -r test@sample.info test@sample.info
less /tmp/Slave_SQL_Running | grep "Slave_SQL_Running: Yes" || echo -e "repl_error.\nplease check master and slave." | mail -s "repl_error" -r test@sample.info test@sample.info
EOF

crontab -e
-----
(追記)
#レプリケーション監視
*/5 * * * * /usr/local/user01/bin/mysql_repl_check.sh
-----

こんな簡単なものでも結構役に立っている。
こいつにレプリ外れを何回教えてもらったことか。
特に気に入っているのはAMIからインスタンスを復旧させてローカルIPアドレスなどが変わってしまってもそのままでよいところ。
使うのであればメールアドレスは自分のに変えてください。
ちなみに下はターミナルに出力する用。
存在自体を忘れててほとんど使うことがない。
MySQLにログインしてSHOW SLAVE STATUS\Gを打ってしまうことが多い。

cat > /usr/local/user01/bin/mysql_repl_check_watch.sh << 'EOF'
#!/bin/bash

set -e
set -u

mysql -uroot -p********* -e "SHOW SLAVE STATUS\G" | grep Slave_IO_Running: > /tmp/Slave_IO_Running
mysql -uroot -p********* -e "SHOW SLAVE STATUS\G" | grep Slave_SQL_Running: > /tmp/Slave_SQL_Running
EOF

chmod a+x /usr/local/user01/bin/mysql_repl_check_watch.sh

/usr/local/user01/bin/mysql_repl_check_watch.sh
mysql: [Warning] Using a password on the command line interface can be insecure.
             Slave_IO_Running: Yes
mysql: [Warning] Using a password on the command line interface can be insecure.
            Slave_SQL_Running: Yes