Zabbix 4.4(六)zabbix监控mysql主从同步状态(自定义监控脚本)

实验环境

zabbix-server
centos7
192.168.14.216

mysql主节点
centos7
192.168.14.210
5.5.64-MariaDB MariaDB Server

mysql从节点
centos7
192.168.14.211
5.5.64-MariaDB MariaDB Server

zabbix-server监控mysql从节点的slave状态两个值(Slave_IO_Running、Slave_SQL_Running),通过这两个值返回的状态判断mysql主从同步是否异常。

前提准备:

mysql主从配置参考:https://blog.csdn.net/tladagio/article/details/103137845

zabbix-server添加监控主机参考:https://blog.csdn.net/tladagio/article/details/103060962

一、mysql从节点

1、查看mysql主从同步状态(mysql用户名和密码自行创建)

2、检测得到两个Yes即表示状态正常

[root@slave ~]# mysql -uroot -p123456 -e "show slave status \G"|grep "_Running"|awk '{print $NF}'|grep -c "Yes"  
2

3、创建监控状态脚本

[root@slave ~]# mkdir -p /usr/local/zabbix/script        #创建一个目录存放脚本
[root@slave ~]# cd /usr/local/zabbix/script/
[root@slave script]# vi check_slave_status.sh
#!/bin/bash
mysql -uroot -p123456 -e "show slave status \G"|grep "_Running"|awk '{print $NF}'|grep -c "Yes"  
[root@slave script]# chmod +x check_slave_status.sh        #授权执行权限

4、新建zabbix-agent监控脚本(引用监控状态脚本)

[root@slave ~]# vi /etc/zabbix/zabbix_agentd.d/userparameter_che_status.conf
UserParameter=check.slave_status,/usr/local/zabbix/script/check_slave_status.sh

5、重启服务

[root@slave ~]# systemctl restart zabbix-agent 

二、zabbix-server

1、测试是否获取到值

[root@f96412915d59 zabbix]# zabbix_get -s 192.168.14.211 -k "check.slave_status"
2

2、添加监控项(键值和UserParameter的值一致)

3、设置触发器

主从状态正常取得数值是2个Yes,如果数值小于2就说明主从状态异常

4、添加图形

5、查看图形

三、查看触发告警

1、从节点手动停止

[root@slave ~]# mysql -uroot -p123456 -e "stop slave;"

2、zabbix页面查看告警

3、从节点手动开启

[root@slave ~]# mysql -uroot -p123456 -e "start  slave;"

4、问题解决之后,自动消除告警提示

故障问题解决

1、如果出现ERROR 1227 (42000) at line 1: Access denied; you need (at least one of) the SUPER,REPLICATION CLIENT privilege(s) for this operation

解决:mysql从节点的命令或者脚本没有加上mysql的用户名和密码

2、如果出现ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

解决:mysql从节点暂时停止掉selinux的拦截行为:setenforce 0  

四、监控mysql主从复制延迟

1、查看延迟

[root@slave ~]# mysql -uroot -p123456 -e "show slave status \G"|grep 'Seconds_Behind_Master'|awk '{print $2}'  
0

Seconds_Behind_Master:0 说明没有延迟

Seconds_Behind_Master:NULL 说明有故障

2、添加Key

[root@slave ~]# cat  /etc/zabbix/zabbix_agentd.d/userparameter_che_status.conf 
UserParameter=check.slave_status,/usr/local/zabbix/script/check_slave_status.sh
UserParameter=seconds_behind_master,mysql -uroot -p123456 -e "show slave status \G"|grep 'Seconds_Behind_Master'|awk '{print $2}'

3、重启服务

[root@slave ~]# systemctl restart zabbix-agent 

4、zabbix-server验证值

[root@f96412915d59 zabbix]# zabbix_get -s 192.168.14.211 -k "seconds_behind_master"
0

5、添加监控项

6、设置触发器

7、主节点测试写入数据

Mysqlslap:
  来自于mariadb包,测试的过程默认生成一个mysqlslap的schema,生成测试表t1,查询和插入测试数据,mysqlslap库自动生成,如果已经存在则先删除。用--only-print来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹

使用格式:
  mysqlslap [options]

900和1000个并发分别得到一次测试结果(Benchmark),并发数越多,执行完所有查询的时间越长。为了准确起见,可以多迭代测试几次

[root@master ~]# mysqlslap -uroot -p123456 -a --concurrency=900,1000 --number-of-queries 1000 --iterations=5 --debug-info
Benchmark
	Average number of seconds to run all queries: 1.444 seconds
	Minimum number of seconds to run all queries: 1.399 seconds
	Maximum number of seconds to run all queries: 1.517 seconds
	Number of clients running queries: 900
	Average number of queries per client: 1

Benchmark
	Average number of seconds to run all queries: 1.611 seconds
	Minimum number of seconds to run all queries: 1.561 seconds
	Maximum number of seconds to run all queries: 1.661 seconds
	Number of clients running queries: 1000
	Average number of queries per client: 1


User time 2.08, System time 4.27
Maximum resident set size 27132, Integral resident set size 0
Non-physical pagefaults 44853, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 61052, Involuntary context switches 112

8、查看告警图形

9、告警提示

发布了132 篇原创文章 · 获赞 118 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/tladagio/article/details/103179470