问题背景:
MySQL主从架构最常见不过了,在生产环境下,主从关系的状态的重要性不言而喻,这里小记一下通过zabbix监控主从状态,并用微信告警测试。
测试环境:
软件 | MySQL-master | MySQL-slave | Zabbix |
版本 | 5.6 | 5.6 | 3.2 |
操作步骤:
两部分: 一、获取监控值
二、用zabbix展现
第一部分:获取监控值
1. 编辑mysql-slave主机上的zabbix-agent配置文件
[root@mysql-slave ~]# vim /etc/zabbix/zabbix_agentd.conf
……
### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=<key>,<shell command>
# See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
# UserParameter=
UserParameter=mysql_repl_check,mysql -uroot -p123456789 -e "show slave status\G" 2>/dev/null | grep -E 'Slave_IO_Running: Yes|Slave_SQL_Running: Yes' | grep -c Yes
### 添加上面这一行 ###
……
说明:
①定义一个key:这里我定义成了“mysql_repl_check”,这个key后面会在zabbix中添加item时用到,请留意;
②添加一个可以获取监控值的shell命令语句:这里就是上面的 “mysql -uroot -p ...”一整串长的命令,应该比较好理解;
注意点:
①key和shell语句之间有一个逗号“,”;
②mysql有些版本监测到你在命令行上直接用明文添加密码时,会产生一个“Warning: Using a password on the command line interface can be insecure.”,这个要关闭,不然后期zbbix server获取相应的监控值时会报type错误,所以这里在命令后面紧跟了一个重定向“2>/dev/null”,其效果是不打印上面的警告信息;
2. 重启zabbix-agent
在mysql-slave上重启zabbix客户端: systemctl restart zabbix-agent
3. 在zabbix server上测试get监控值
[root@zabbix-server ~]# zabbix_get -s 192.168.1.12 -k mysql_repl_check
结果返回一个监控值:2,我们一般查看主从状态也就是查看那两个running的值是否都是“Yes”。
至此,监控值获取已经完成。
第二部分:zabbix展示
4. 新建item(名字为我们上面定义的“mysql_repl_check”)
添加好之后,保存;
5. 添加图形Graphs
保存一下;
6.添加触发器Triggers
保存一下;
至此,第二部分完成。
测试:
先停止:
mysql -uroot -p123456789 -e "stop slave;show slave status \G;"
间隔一会儿,再次启动
mysql -uroot -p123456789 -e "start slave;show slave status \G;"
查看zabbix图形
手机微信收到告警信息
结束.