监控数据库主从同步是否正常运行,需要从mysql主从同步原理入手,即查看从库的IO线程和SQL线程是否工作正常:
mysql> show slave status\G;
...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
通过以下命令可以统计SQL线程和IO线程正常运行时Yes的个数:
[root@mysql77 ~]# mysql -uroot -p123456 -e 'show slave status\G'| grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes
mysql: [Warning] Using a password on the command line interface can be insecure. //在命令行下输入密码的警告提示
2
1、在zabbix_agent安装目录下创建mysql隐藏配置文件.my.cnf
[root@mysql77 ~]# vim /usr/local/etc/.my.cnf
[mysql]
host=localhost
user=root
password=123456
[mysqladmin]
host=localhost
user=root
password=123456
[root@mysql77 ~]# ls /usr/local/etc -a
. .. .my.cnf zabbix_agentd.conf zabbix_agentd.conf.d
2、创建自定义监控命令
[root@mysql77 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/check_mysqld.conf
UserParameter=check_replication,HOME=/usr/local/etc /usr/bin/mysql -e 'show slave status\G'| grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes
注:HOME变量设置当前命令的执行路径,使得在获取主从同步信息时不会出现在命令行下使用密码的提示
3、重启服务并测试自定义监控命令
[root@mysql77 ~]# zabbix_agentd
[root@mysql77 ~]# netstat -ntulp |grep :10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 22377/zabbix_agentd
[root@mysql77 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k check_replication //客户端测试
2
[root@zabbix ~]# zabbix_get -s 192.168.4.77 -p 10050 -k check_replication //监控端测试
2
4、zabbix创建自定义监控项、触发器
(1)创建监控项
配置—>主机—>mysql77(被监控主机):监控项—>创建监控项,配置如下:
(2)创建触发器
配置—>主机—>mysql77(被监控主机):触发器—>创建触发器,配置如下:
其中,表达式构造如下: