主机IP | 角色 | 主机名 |
---|---|---|
192.168.169.139 | zabbix_server | localhost |
192.168.169.140 | zabbix_agentd、mysql从库 | slave |
192.168.169.142 | mysql主库 | master |
本实验需要前置环境,zabbix,MySQL主从复制,zabbix部署见《zabbix部署》mysql安装见《mysql进阶》mysql主从复制见《mysql主从复制》
//在agentd被监控端,也就是mysql从库编写脚本,获取mysql主从状态 [root@slave ~]# cd /scripts/zabbix [root@slave zabbix]# vim mysql_MS_sta.sh #!/bin/bash count=$(mysql -u root -pzzd123! -e'show slave status\G' 2> /dev/null | grep -E "IO_Running:|SQL_Running:" | grep -c Yes) #因为mysql使用密码明文登录会有告警,所以用错误重定向将他丢到黑洞里去 (/dev/null) if [ $count == 2 ];then echo "0" #0没问题 else echo "1" #1有问题 fi [root@slave zabbix]# chmod +x mysql_MS_sta.sh //执行一下,测试效果 [root@slave zabbix]# ./mysql_MS_sta.sh 0 //编辑/usr/local/etc/zabbix_agentd.conf [root@slave zabbix]# vim /usr/local/etc/zabbix_agentd.conf UnsafeUserParameters=1 UserParameter=check_mysql_MS_sta,/bin/bash /scripts/zabbix/mysql_MS_sta.sh //重启zabbix_agentd [root@slave zabbix]# pkill zabbix_agentd [root@slave zabbix]# zabbix_agentd //在zabbix_server上进行验证 [root@localhost ~]# zabbix_get -s 192.168.169.140 -k check_mysql_MS_sta 0
配置监控项
配置触发器
手动触发告警
//在mysql从库停掉主从复制 mysql> stop slave; Query OK, 0 rows affected (0.00 sec)
等待告警
//在agentd被监控端,也就是mysql从库编写脚本,获取mysql主从延迟数值 [root@slave zabbix]# pwd /scripts/zabbix [root@slave zabbix]# vim mysql_MS_delay.sh #!/bin/bash delay=$(mysql -uroot -pzzd123! 2> /dev/null -e"show slave status\G" | awk '/Seconds_Behind_Master/ {print $2}') echo $delay [root@slave zabbix]# chmod +x mysql_MS_delay.sh //执行一下脚本,测试效果 [root@slave zabbix]# ./mysql_MS_delay.sh 189 //编辑zabbix_agentd的配置文件 [root@slave zabbix]# vim /usr/local/etc/zabbix_agentd.conf UserParameter=check_mysql_MS_delay,/bin/bash /scripts/zabbix/mysql_MS_delay.sh //重启agentd [root@slave zabbix]# pkill zabbix_agentd [root@slave zabbix]# zabbix_agentd //在服务端测试 [root@localhost ~]# zabbix_get -s 192.168.169.140 -k check_mysql_MS_delay 204
配置监控项
配置触发器
等到mysql主从延迟大于200的时候发出告警