zabbix自定义监控mysql主从状态和延迟
zabbix自定义监控mysql主从状态和延迟
zabbix自定义监控mysql主从状态
主机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)
等待告警
zabbix自定义监控mysql主从延迟
//在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的时候发出告警