mysql从库的状态主要监控的值有三个,分别为Slave SQL Running,Slave IO Running和Seconds Behind Master。只有当Slave SQL Running,Slave IO Running为yes,然后Seconds Behind Master为0的时候,从库才有可能运行在正常的状态下(有时候这三个值都符合要求,从库数据也会有问题)。先看下监控的效果:
由于是自动发现监控的mysql从库状态,因此,先贴下自动发现规则的配置,使用mysql.slave.discover去获取mysql从库的端口,在从库安装zabbix agentd,并添加配置(UserParameter=mysql.slave.discover,python /usr/local/zabbix/discover_mysql_slave.py):
其中,自动发现mysql端口的python脚本见:https://my.oschina.net/zhuangweihong/blog/785919 此文章有类似的脚本。自动发现完mysql的端口后,使用的探测项目原型如下,使用三个原型去获取mysql从库的三个需要监控的值:
其中获取的键值需要在从库agent中添加配置,然后重启agentd:
UserParameter=mysql.slave.status[*],sh /usr/local/zabbix/check_mysql_slave.sh -u xxx-p xxx -P $1 -k $2 2>/dev/null
最后就看下/usr/local/zabbix/check_mysql_slave.sh脚本,如下:
#!/bin/sh while getopts "u:p:P:k:" opt do case $opt in u ) user=$OPTARG;; p ) password=$OPTARG;; P ) port=$OPTARG;; k ) key=$OPTARG;; ? ) echo 'parameter is wrong!' exit 1;; esac done if [ ! "${user}" ] || [ ! "${password}" ] || [ ! "${port}" ] || [ ! "${key}" ];then echo "parameter is null" exit 1 fi mysql -u ${user} -p${password} -h 127.0.0.1 -P${port} -e "show slave status\G"|grep "${key}\:"|awk '{pr
Atas ialah kandungan terperinci Master mengajar anda untuk menemui dan memantau status pangkalan data hamba mysql secara automatik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!