本文基于Centos7系统,MySQL5.7验证通过,理论适用于其他版本。
先说下思路:监控MySQL主从,是通过show slave status\G'命令查询Slave_IO_Running和Slave_SQL_Running状态是否是yes,非yes的情况下,表示主从同步存在异常然后触发zabbix警告。
本文不适用于小白,一点都不懂的不建议直接尝试!
1、在MySQL服务器上安装zabbix-agent
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm yum install zabbix-agent
|-----|------------------------------------------------------------------------------------------------------------------------| | 1 2 | rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm yum install zabbix-agent |
2、修改zabbix-agent配置文件
vi /etc/zabbix/zabbix_agentd.conf
|---|-----------------------------------| | 1 | vi /etc/zabbix/zabbix_agentd.conf |
修改Server字段为zabbix-server服务器的地址
Server=10.10.10.10
|---|--------------------| | 1 | Server=10.10.10.10 |
3、配置MySQL主从检测脚本
mkdir /etc/zabbix/script vi mysql_sync.sh mysql -uroot -pmima -e 'show slave status\G' 2>/dev/null | grep -E "Slave_IO_Running:|Slave_SQL_Running:" | awk '{print $2}' | grep -c Yes
|-------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 | mkdir /etc/zabbix/script vi mysql_sync.sh mysql -uroot -pmima -e 'show slave status\G' 2>/dev/null | grep -E "Slave_IO_Running:|Slave_SQL_Running:" | awk '{print $2}' | grep -c Yes |
因为此处使用了密码,MySQL会提示警告信息(mysql: [Warning] Using a password on the command line interface can be insecure.),所以为了避免此信息影响我们取值,我这里通过2>/dev/null进行屏蔽警告。
给予执行权限
chmod +x mysql_sync.sh
|---|------------------------| | 1 | chmod +x mysql_sync.sh |
4、添加自定义UserParameter
vi /etc/zabbix/zabbix_agentd.d/userparameter_mysql_sync.conf
|---|--------------------------------------------------------------| | 1 | vi /etc/zabbix/zabbix_agentd.d/userparameter_mysql_sync.conf |
内容如下
UserParameter=mysql_sync[*],/etc/zabbix/script/mysql_sync.sh
|---|-----------------------------------------------------------------| | 1 | UserParameter=mysql_sync[*],/etc/zabbix/script/mysql_sync.sh |
5、启动zabbix-agent并设置开机自启
systemctl enable zabbix-agent systemctl start zabbix-agent
|-----|------------------------------------------------------------| | 1 2 | systemctl enable zabbix-agent systemctl start zabbix-agent |
6、验证
在zabbix-server服务器执行以下命令,将10.10.10.10替换为MySQL服务器的IP
zabbix_get -s 10.10.10.10 -p 10050 -k mysql_sync
|---|--------------------------------------------------| | 1 | zabbix_get -s 10.10.10.10 -p 10050 -k mysql_sync |
7、zabbix仪表盘配置
创建主机,添加监控项
我这里自定义的键值为mysql_sync,所以在仪表盘中配置键值的时候一定也要用mysql_sync
添加触发器,当取值不等于2时,即表示主从同步有异常,则触发告警
添加图形监控,添加图形是为了更直观的看到,历史主从同步异常时间节点,以及异常的频率(非必须)
Zabbix5.0钉钉报警配置见:https://blog.whsir.com/post-6090.html