搭建 MySQL 主从后, 很多时候不知道从的状态是否 ok, 有时候出现异常不能及时知道, 这里通过 shell 脚本结合 zabbix 实现监控并告警
一般情况下, 在 MySQL 的从上查看从的运行状态是通过 Slave_IO_Running 线程和 Slave_SQL_Running 线程是否 ok, 通过命令 "show slave status\G;" 即可查看. 所以这里根据这两个值进行判断.
agent 端脚本编写及配置
说明: 所有 zabbix 相关的脚本我都放在了 / etc/zabbix/script/ 目录里面, 下面这些都是在 zabbix 被监控端上操作, 并且上面数据库是属于 MySQL 主从的从
1) 脚本编写
- [root@srt-xt ~]# cd /etc/zabbix/script/
- [root@srt-xt /etc/zabbix/script]# cat mysql_slvae_status.sh
- #!/bin/bash
- #Desc: 用于获取主从同步信息, 判断主从是否出现异常, 然后提交给 zabbix
- #Date: 2019-06-06
- #by:Lee-YJ
- USER="root"
- PASSWD="nae3eabo9naeli1Oov1a"
- NAME=$1
- function IO {
- Slave_IO_Running=`mysql -u $USER -p$PASSWD -e "show slave status\G;" 2> /dev/null |grep Slave_IO_Running |awk '{print $2}'`
- if [ $Slave_IO_Running == "Yes" ];then
- echo 0
- else
- echo 1
- fi
- }
- function SQL {
- Slave_SQL_Running=`mysql -u $USER -p$PASSWD -e "show slave status\G;" 2> /dev/null |grep Slave_SQL_Running: |awk '{print $2}'`
- if [ $Slave_SQL_Running == "Yes" ];then
- echo 0
- else
- echo 1
- fi
- }
- case $NAME in
- io)
- IO
- ;;
- sql)
- SQL
- ;;
- *)
- echo -e "Usage: $0 [io | sql]"
- esac
2) 配置文件修改, 编写一个自配置文件, 里面指定上面编写的脚本的路径
[root@srt-xt ~]# cd /etc/zabbix/zabbix_agentd.d/ [root@srt-xt /etc/zabbix/zabbix_agentd.d]# cat userparameter_mysql_slave.conf # 获取 MySQL slave 状态 UserParameter=MySQL.slave[*],/etc/zabbix/script/mysql_slvae_status.sh $1
3) 重启 zabbix-agent
[root@srt-xt /etc/zabbix/zabbix_agentd.d]# /etc/init.d/zabbix-agent restart
4) 在 zabbix-server 端进行测试, 看是否能够成功获取到值, 通过上面的脚本, 这里为 0 即表示正常, 为 1 即表示不正常.
[root@xxxxx ~]# zabbix_get -s 218.75.249.55 -k MySQL.slave[sql] 0 [root@xxxxx ~]# zabbix_get -s 218.75.249.55 -k MySQL.slave[io] 0
server 端 web 配置
1) 配置 Slave_IO_Running 线程监控项
2) 配置 Slave_SQL_Running 线程监控项
3) 配置 Slave_IO_Running 线程的触发器
4) 配置 Slave_SQL_Running 线程的触发器
5) 配置触发动作
配置动作中需要执行的动作 (发送消息给管理员)
配置状态恢复时的操作 (同样发送消息给管理员)
最终查看监控项
至此, 就完成了 MySQL 主从中从的状态监控了.
来源: http://www.linuxidc.com/Linux/2019-06/159056.htm