zabbix—监控mysql数据

环境

host ip 部署
zabbix-server 192.168.153.179 zabbix服务器搭建完毕
zabbix-agent 192.168.153.178 zabbix客户端搭建完毕

搭建参考:Zabbix安装部署(Centos:7)

注意事项:

  • 服务器和客户端时间必须一致
  • 主服务器必须安装zabbix-get软件(测试使用)
  • 主从mysql服务必须安装
  • mysql主从搭建完毕
  • 从服务器创建一个本地用户

开始操作

前期准备:

从上操作:

创建一个存放脚本目录(之后我们的mysql.sh脚本就写在这个目录里面)

[root@zabbix-agent ~]# mkdir /etc/zabbix/scripts

在此目录下创建一个脚本文件,给与执行权限

[root@zabbix-agent scripts]# touch mysql.sh
[root@zabbix-agent scripts]# chmod +x mysql.sh 
[root@zabbix-agent scripts]# ll mysql.sh 
-rwxr-xr-x. 1 root root 0 9月  26 15:38 mysql.sh

自定义一个key:(名为mysql.conf)

[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.d/mysql.conf

书写内容:

[root@zabbix-agent ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf 
UserParameter=mysql_data[*],/etc/zabbix/scripts/mysql.sh $1
# UserParameter:用户参数
# mysql.sh[*]:我们之后会用到的key
# /etc/zabbix/scripts/mysql.sh:脚本路径
# $1:第一个传参

重启zabbix-agent服务

[root@zabbix-agent scripts]# systemctl restart zabbix-agent

登录zabbix网页端创建一个mysql的监控主机

扫描二维码关注公众号,回复: 12078904 查看本文章

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

前期准备完毕!
————————————————————————————————
前期测试mysql是否存在并启动,之后在图形化界面完成对mysql服务的监控

server端操作:

[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k net.tcp.listen[3306]
1

mysql监控项添加

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
mysql图形添加

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里,我们在添加一个监测mysql状态的触发功能

mysql触发器添加

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试一下我们的触发器是否会被触发

在测试之前添加一步
在这里插入图片描述

agent端关闭mysql后刷新一下浏览器,zabbix界面如下:

在这里插入图片描述
agent端重新启动mysql服务,如下即为完成触发器部署

在这里插入图片描述
最后,我们来看一下我们的mysql图形界面

在这里插入图片描述

  • 前奏到此结束,真正的监控mysql数据现在开始
    ———————————————————————————————

目标1:(实现服务端对客户端数据库主从的成功监测并正确在图形化界面添加 监控、图形)

主从成功的标志(双Yes)
在这里,我们使用截取Yes的数量来判断我们的主从状态

agent端操作:

  • 首先在我们的脚本目录下完善我们的监测脚本
[root@zabbix-agent ~]# cd /etc/zabbix/scripts/
[root@zabbix-agent scripts]# vim mysql.sh 
[root@zabbix-agent scripts]# cat mysql.sh 
#!/bin/bash
#定义一个本地用户登录mysql数据库的变量
mysql="mysql -utom -p123"
case $1 in
	#目标1:主从状态监控
	slave_status)
        $mysql -e "show slave status \G"|grep -w Yes|awk '{print $2}'|wc -l	
	;;
esac

之后在我们直接在服务端使用get命令检测返回结果是否为2

[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[slave_status]
2

测试成功后,直接在浏览器添加mysql主从的监控项和图形即可

  • 添加mysql主从监控项

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 添加mysql主从图形

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 目标1部署完毕
    ——————————————————————————————

目标2:(实现服务端对客户端数据库吞吐量的成功监测并正确在图形化界面添加 监控、图形)

agent端操作:

  • 完善脚本
[root@zabbix-agent scripts]# vim mysql.sh 
[root@zabbix-agent scripts]# pwd
/etc/zabbix/scripts
[root@zabbix-agent scripts]# cat mysql.sh 
#!/bin/bash
#定义一个本地用户登录mysql数据库的变量
mysql="mysql -utom -p123"
case $1 in
	#目标1:主从状态监控
	slave_status)
        $mysql -e "show slave status \G"|grep -w Yes|awk '{print $2}'|wc -l	
	;;
	#目标2:吞吐量监控
	#流量接受
	Bytes_sent)
	mysqladmin extended|grep Bytes_sent|awk '{print $4}'
	;;
	#流量发送
	Bytes_received)
	mysqladmin extended|grep Bytes_received|awk '{print $4}'
	;;
esac

服务端检测

[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[Bytes_sent]
1308263
[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[Bytes_received]
985963

进入zabbix图形化界面添加两个监控和一个图形,把发送和接受量放在一个图形里更加直观清晰

添加Bytes_sent发送监控

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加Bytes_received接收监控

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加Bytes_sent和Bytes_received的图形

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 目标2部署完毕
    ——————————————————————————————

目标3:(实现服务端对客户端数据库增删改查的成功监测并正确在图形化界面添加 监控、图形)

agent端操作:

  • 完善脚本
[root@zabbix-agent scripts]# vim mysql.sh 
[root@zabbix-agent scripts]# cat mysql.sh 
#!/bin/bash
#定义一个本地用户登录mysql数据库的变量
mysql="mysql -utom -p123"
case $1 in
	#目标1:主从状态监控
	slave_status)
        $mysql -e "show slave status \G"|grep -w Yes|awk '{print $2}'|wc -l	
	;;
	#目标2:吞吐量监控
	#流量接受
	Bytes_sent)
	mysqladmin extended|grep Bytes_sent|awk '{print $4}'
	;;
	#流量发送
	Bytes_received)
	mysqladmin extended|grep Bytes_received|awk '{print $4}'
	;;
	#目标3:增删改查监控
	#增
	Com_insert)
	mysqladmin extended-status|grep -w Com_insert|awk '{print $4}'
	;;
	#删
	Com_delete)
	mysqladmin extended-status|grep -w Com_delete|awk '{print $4}'
	;;
	#改
	Com_update)
	mysqladmin extended-status|grep -w Com_update|awk '{print $4}'
	;;
	#查
	Com_select)
	mysqladmin extended-status|grep -w Com_select|awk '{print $4}'
	;;
esac

服务端检测

[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[Com_insert]
5526
[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[Com_delete]
60
[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[Com_update]
209
[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[Com_select]
1748

进入zabbix图形化界面,添加4个监控项和1个图形,把增删改查放到一个图形里,明了清晰

添加增监控

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加删监控

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加改监控

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加查监控

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加增删改查图形

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 目标3部署完毕
    ——————————————————————————————

目标4:(实现服务端对客户端数据库性能指标的成功监测并正确在图形化界面添加 监控、图形)

agent端操作:

  • 完善脚本
[root@zabbix-agent scripts]# pwd
/etc/zabbix/scripts
[root@zabbix-agent scripts]# vim mysql.sh 
[root@zabbix-agent scripts]# cat mysql.sh 
#!/bin/bash
#定义一个本地用户登录mysql数据库的变量
mysql="mysql -utom -p123"
case $1 in
	#目标1:主从状态监控
	slave_status)
        $mysql -e "show slave status \G"|grep -w Yes|awk '{print $2}'|wc -l	
	;;
	#目标2:吞吐量监控
	#流量接受
	Bytes_sent)
	mysqladmin extended|grep Bytes_sent|awk '{print $4}'
	;;
	#流量发送
	Bytes_received)
	mysqladmin extended|grep Bytes_received|awk '{print $4}'
	;;
	#目标3:增删改查监控
	#增
	Com_insert)
	mysqladmin extended-status|grep -w Com_insert|awk '{print $4}'
	;;
	#删
	Com_delete)
	mysqladmin extended-status|grep -w Com_delete|awk '{print $4}'
	;;
	#改
	Com_update)
	mysqladmin extended-status|grep -w Com_update|awk '{print $4}'
	;;
	#查
	Com_select)
	mysqladmin extended-status|grep -w Com_select|awk '{print $4}'
	;;
	#目标4:性能指标监控
	#QPS(Questions Per second:)每秒能处理多少次请求数
	#计算公式:questions/uptime=qps
	qps)	
	mysqladmin status|awk '{print $6/$2}'
	;;
	#TPS(Transactions Per Second)每秒查询处理的事务数
	#最大的特点:要么成功都成功,要么失败都失败!!
	#计算公式:(commit+rollback)/uptime=tps
	tps)
	rollback=$(mysqladmin extended-status|grep -w Com_rollback|awk '{print $4}')
	commit=$(mysqladmin extended-status|grep -w Com_commit|awk '{print $4}')
	uptime=$(mysqladmin status|awk '{print $2}')
	count=$[$rollback+$commit]
	echo "$count $uptime" > /tmp/re.txt
	cat /tmp/re.txt|awk '{print $1/$2}'
	;;	
esac

给/tmp/re.txt加777权限

[root@zabbix-agent scripts]# chmod -R 777 /tmp/re.txt 

服务端检测

[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[qps]
10.0389
[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[tps]
627.321

进入图形化界面添加2个监控项和1个图形,把qps和tps放到一个图形里,一目了然

添加qps监控

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

添加tps监控

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
添加qps和tps的图形

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 目标4部署完毕
    ——————————————————————————————

目标5:(实现服务端对客户端数据库某个库的库大小和表大小的成功监测并正确在图形化界面添加 监控、图形)

agent端操作:

这个是我们完成目标5必须了解的参数

在这里插入图片描述

  • 完善脚本
[root@zabbix-agent scripts]# pwd
/etc/zabbix/scripts
[root@zabbix-agent scripts]# vim mysql.sh 
[root@zabbix-agent scripts]# cat mysql.sh 
#!/bin/bash
#定义一个本地用户登录mysql数据库的变量
mysql="mysql -utom -p123"
case $1 in
	#目标1:主从状态监控
	slave_status)
        $mysql -e "show slave status \G"|grep -w Yes|awk '{print $2}'|wc -l	
	;;
	#目标2:吞吐量监控
	#流量接受
	Bytes_sent)
	mysqladmin extended|grep Bytes_sent|awk '{print $4}'
	;;
	#流量发送
	Bytes_received)
	mysqladmin extended|grep Bytes_received|awk '{print $4}'
	;;
	#目标3:增删改查监控
	#增
	Com_insert)
	mysqladmin extended-status|grep -w Com_insert|awk '{print $4}'
	;;
	#删
	Com_delete)
	mysqladmin extended-status|grep -w Com_delete|awk '{print $4}'
	;;
	#改
	Com_update)
	mysqladmin extended-status|grep -w Com_update|awk '{print $4}'
	;;
	#查
	Com_select)
	mysqladmin extended-status|grep -w Com_select|awk '{print $4}'
	;;
	#目标4:性能指标监控
	#QPS(Questions Per second:)每秒能处理多少次请求数
	#计算公式:questions/uptime=qps
	qps)	
	mysqladmin status|awk '{print $6/$2}'
	;;
	#TPS(Transactions Per Second)每秒查询处理的事务数
	#最大的特点:要么成功都成功,要么失败都失败!!
	#计算公式:(commit+rollback)/uptime=tps
	tps)
	rollback=$(mysqladmin extended-status|grep -w Com_rollback|awk '{print $4}')
	commit=$(mysqladmin extended-status|grep -w Com_commit|awk '{print $4}')
	uptime=$(mysqladmin status|awk '{print $2}')
	count=$[$rollback+$commit]
	echo "$count $uptime" > /tmp/re.txt
	cat /tmp/re.txt|awk '{print $1/$2}'
	;;	
	#目标5:监控指定库大小和表大小
	#监控mysql数据库的大小
	db_size)
	$mysql -e "select sum(data_length) from information_schema.tables where table_schema='mysql'"|sed '1d'
	;;
	#监控mysql数据库下user表的大小
	tb_size)
	$mysql -e "select sum(data_length) from information_schema.tables where table_schema='mysql' and table_name='user'"|sed '1d'
	;;
esac

服务端检测

[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[db_size]
555098
[root@zabbix-server ~]# zabbix_get -s 192.168.153.178 -k mysql_data[tb_size]
400

进入服务器图形界面添加2个监控项和1个图形,在这里还是选择把库大小和表大小的监控放在同一图标下,方便查看

添加db_size监控

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加tb_size监控

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加db_size和tb_size的图形

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 目标5部署完毕

到这里,我们的zabbix监控mysql数据库一些列数据状态就部署完毕了
~_ ~

猜你喜欢

转载自blog.csdn.net/qq_49296785/article/details/108812366