zabbix监控MySQL主从状态和延迟
环境说明:
主机名 | IP | 服务名 |
---|---|---|
master | 192.168.188.128 | 主库 |
zabbix-server | 192.168.188.130 | zabbix服务端 |
zabbix-agent | 192.168.188.131 | zabbix客户端和从库 |
监控主从的状态
主从配置参考mysql主从复制,有略微不同的是参考文章是源码安装,现在做的是yum安装,配置会有略微不同,下面会进行说明
//主库配置
[root@master ~]# vim /etc/my.cnf.d/mariadb-server.cnf
log-bin = mysql_bin
server-id = 10
//从库配置
[root@zabbix-agent ~]# vim /etc/my.cnf.d/mariadb-server.cnf
server-id = 20
relay-log = myrelay
配置脚本
//创建脚本目录
[root@zabbix-agent ~]# mkdir /scripts
[root@zabbix-agent ~]# cd /scripts
[root@zabbix-agent scripts]# vim mysqlms.sh
#!/bin/bash
count=$(mysql -uroot -p123 -e "show slave status\G" |grep -v grep |grep -c 'Yes')
if [ $count -ne 2 ];then
echo '1'
else
echo '0'
fi
[root@zabbix-agent scripts]# chmod +x mysqlms.sh
[root@zabbix-agent scripts]# ./mysqlms.sh
0
//在agent端编辑配置文件
[root@zabbix-agent scripts]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=check_mysql[*],/bin/bash /scripts/mysqlms.sh
//重启服务
[root@zabbix-agent ~]# pkill zabbix_agentd
[root@zabbix-agent ~]# zabbix_agentd
[root@zabbix-agent ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 80 0.0.0.0:3306 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
//在服务端去测试
[root@zabbix-server ~]# zabbix_get -s 192.168.188.131 -k check_mysql
0
//手动添加动作
[root@master ~]# systemctl start firewalld.service //主库
[root@zabbix-agent scripts]# mysql -uroot -p123 //从库
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.001 sec)
[root@zabbix-server ~]# zabbix_get -s 192.168.188.131 -k check_mysql
1 //zabbix服务端
添加监控项
查看监控数据
添加触发器
手动触发报警
//关闭主从
[root@zabbix-agent ~]# mysql -uroot -p123 -e "stop slave;"
自定义监控MySQL延迟
配置监控脚本
//在被监控端,也就是从库,修改配置文件
[root@zabbix-agent ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_mysqlyc,/bin/bash /scripts/mysqlyc.sh
//重启服务生效配置
[root@zabbix-agent ~]# pkill zabbix_agentd
[root@zabbix-agent ~]# zabbix_agentd
//编写脚本
[root@zabbix-agent ~]# vim /scripts/mysqlyc.sh
count=`mysql -uroot -p123 -e "show slave status\G" 2> /dev/null |awk '/Seconds_Behind_Master/ {print $2}' `
if [ $count -ne 0 ];then
echo '1'
else
echo '0'
fi
[root@zabbix-agent ~]# chmod +x /scripts/mysqlyc.sh
//去服务端检查key是否可用
[root@zabbix-server ~]# zabbix_get -s 192.168.188.131 -k check_mysqlyc
0
添加监控项
查看监控数据
添加触发器
报警触发
等你延迟200以上就报警了