zabbix监控mysql

一、mysql数据库监控的内容有

mysql的吞吐量
mysql的常规操作(增删改查)
QPS(Questions Per second:)每秒能处理多少次请求数
TPS(Transactions Per Second)每秒查询处理的事务数
mysql库大小和表大小
监控innodb缓冲池的read命中率

mkdir /etc/zabbix/scripts/
cd /etc/zabbix/scripts/
vim mysql.sh
#!/bin/bash
case $1 in#mysql吞吐量#流量发送Bytes_sent)mysqladmin extended-status|grep "Bytes_sent"|awk '{print $4}';;#流量接收Bytes_received)mysqladmin extended-status|grep "Bytes_received"|awk '{print $4}';;#mysql数据库增删改查#增Com_insert)mysqladmin extended-status|grep -w "Com_insert"|awk '{print $4}';;#删mysqladmin extended-status|grep Com_delete|sed -n '1p'|awk '{print $4}';;#改mysqladmin extended-status|grep Com_update|sed -n '1p'|awk '{print $4}';;#查mysqladmin extended-status|grep Com_select|awk '{print $4}';;esac
第二种:
#!/bin/bashuptime=`mysqladmin status|awk '{print $2}'`#echo "$uptime"case $1 inmysql_slave)#主从状态mysql -uqq -p123 -e "show slave status\G;"|grep Running | grep Running | awk -F ':' '{print $2}' | wc -l;;Byte_sent) #发送量mysqladmin extended-status|grep Byte|sed -n '2p'|awk '{print $4}';;Byte_received)#接收量mysqladmin extended-status|grep Bytes_re|awk '{print $4}';;Com_select)#查mysqladmin extended-status|grep Com_select|awk '{print $4}';;Com_telete)#删mysqladmin extended-status|grep Com_delete|sed -n '1p'|awk '{print $4}';;Com_insert)#增mysqladmin extended-status|grep Com_insert|sed -n '1p'|awk '{print $4}';;Com_update)#改mysqladmin extended-status|grep Com_update|sed -n '1p'|awk '{print $4}';;qps)#每秒请求次数的数量qu=`mysqladmin status|awk '{print $6}'`qps=`echo "scal=2;$qu/$uptime"|bc`echo "$qps";;tps)#每秒处理事务的数量commit=`mysqladmin extended-status|grep -w Com_commit|awk '{print $4}'`rollback=`mysqladmin extended-status|grep -w Com_rollback|sed -n '1p'|awk '{print $4}'`tps_tmp1=$((${commit}+${rollback}))tps=$(echo "scale=2;${tps_tmp1}/$uptime"|bc)echo "$tps";;database_size)#库的大小mysql -e "use information_schema;select round(DATA_LENGTH/1024/1024,2) from tables where TABLE_SCHEMA ='mysql';"|sed -n '9p';;tables_size)#表的大小mysql -e "use information_schema; select round(DATA_LENGTH/1024/1024,2) from tables where TABLE_SCHEMA='mysql' and TABLE_NAME='user';"|sed -n '2p';;esac
第三种:
#!/bin/bash # MySQL连接参数 
MYSQL_HOST="your-mysql-host"
MYSQL_USER="your-mysql-user"
MYSQL_PASSWORD="your-mysql-password"# 获取数据库吞吐量 
吞吐量() {local qps qps=$(mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p "$MYSQL_PASSWORD" -e "SHOW STATUS LIKE 'Queries'" | tail -n +2 | awk '{print $2}')echo "QPS: $qps"
}# 获取数据库TPS 
tps() {local tps tps=$(mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p "$MYSQL_PASSWORD" -e "SHOW STATUS LIKE 'Com_commit'" | tail -n +2 | awk '{print $2}')echo "TPS: $tps"
}# 获取库大小和表大小 
库表大小() {local total_size table_size total_size=$(mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p "$MYSQL_PASSWORD" -e "SELECT SUM(data_length + index_length) / 1024 / 1024 AS Total FROM information_schema.tables WHERE table_schema = 'your-database-name';")table_size=$(mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p "$MYSQL_PASSWORD" -e "SELECT table_name, data_length + index_length AS Size FROM information_schema.tables WHERE table_schema = 'your-database-name';")echo "Total database size: $total_size MB"echo "Table sizes:"echo "$table_size"
}# 监控InnoDB缓冲池的read命中率 
缓冲池命中率() {local buffer_pool_info buffer_pool_info=$(mysql -h "$MYSQL_HOST" -u "$MYSQL_PASSWORD" -p "$MYSQL_PASSWORD" -e "SHOW ENGINE INNODB STATUS;" | grep "Buffer pool and memory")echo "InnoDB Buffer Pool Info: $buffer_pool_info"
}# 执行监控 
吞吐量 
tps 
库表大小 
缓冲池命中率 
1、模板数据配置文件

复制以下内容到/etc/zabbix/zabbix_agentd.d/template_db_mysql.conf中

#template_db_mysql.conf created by Zabbix for "Template DB MySQL" and Zabbix 5.0
#For OS Linux: You need create .my.cnf in zabbix-agent home directory (/var/lib/zabbix by default) 
#For OS Windows: You need add PATH to mysql and mysqladmin and create my.cnf in %WINDIR%\my.cnf,C:\my.cnf,BASEDIR\my.cnf https://dev.mysql.com/doc/refman/5.7/en/option-files.html
#The file must have three strings:
#[client]
#user='zbx_monitor'
#password='<password>'
#UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT COALESCE(SUM(DATA_LENGTH + INDEX_LENGTH),0) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
2 、查看zabbix_agent配置文件中 Include参数

3 、创建数据库监控用户
mysql -uroot -p你的mysql密码
CREATE USER '监控用户名'@'%' IDENTIFIED BY '监控用户密码'; 
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO '监控用户名'@'%';
4 、创建步骤3登录用户名,密码配置文件
mkdir /var/lib/zabbixvim /var/lib/zabbix/.my.cnf# 添加如下文件
[client]
user='监控用户名'
password='监控用户密码'

二、zabbix监控mysql四大性能指标

查询吞吐量  
查询执行性能  
连接情况 
缓冲池使用情况

1、吞吐量
Com_select:select查询语句个数/每秒
Com_insert:insert操作语句个数/每秒
Com-update:update操作语句个数/每秒
Com-delete:delete操作语句个数/每秒
Questions:查询语句总量mysqladmin  -uread -p123456 -h47.98.97.124  extended-status | grep Com_select 
| Com_select                               | 18484       |mysqladmin  -uread -p123456 -h47.98.97.124  extended-status | grep Com_update
| Com_update                               | 3000        |mysqladmin  -uread -p123456 -h47.98.97.124  extended-status | grep Com_insert
| Com_insert                               | 1054        |mysqladmin  -uread -p123456 -h47.98.97.124  extended-status | grep Com_delete
| Com_delete                               | 198         |mysqladmin  -uread -p123456 -h47.98.97.124  extended-status | grep Questions 
| Questions                                | 723868      |注:
1. Writes = Com_insert + Com_update + Com_delete,如果在监控mysql吞吐量写操作的时候可以将insertupdate、delete数值进行合并。 
2. Questions是反映当前查询数量,设置告警非常必要,查询量的骤降,可能就预示着某个严重的问题。
2、查询性能
Slow_queries:慢查询数量mysqladmin  -uread -p123456 -h47.98.97.124  extended-status | grep Slow_queries
| Slow_queries                             | 0           |
3、连接情况
Threads_connected:当前打开的数据库连接数
max_connections:数据库当前的最大连接数mysqladmin  -uread -p123456 -h47.98.97.124  extended-status | grep -i connect
| Aborted_connects                         | 0           |
| Connections                              | 572         |
| Max_used_connections                     | 4           |
| Ssl_client_connects                      | 0           |
| Ssl_connect_renegotiates                 | 0           |
| Ssl_finished_connects                    | 0           |
| Threads_connected                        | 2           |检查并设置连接限制监控客户端连接情况相当重要,因为一旦可用连接耗尽,新的客户端连接就会遭到拒绝。MySQL 默认的连接数限制为 151。查询最大连接数
方法一:
MariaDB [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+方法二:
mysql -uread -p123456 -h47.98.97.124 -e "show variables like 'max_connections'"|grep max_connections
max_connections 151修改连接数
MariaDB [(none)]> set global max_connections = 200;
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 200   |
+-----------------+-------+
1 row in set (0.00 sec)

三、编写一下zabbix客户端的脚本

脚本内容如下:

#!/bin/bash
# 2024年5月21日 13:13:32
# Authoed by pzz
# Used to get the MySQL parameter
CONNECTION1="mysqladmin -uroot -proot status"
CONNECTION2="mysqladmin -uroot -proot extended-status"
if [ $# -ne 1 ];thenecho "arg error,there should be one arg!"
elsecase $1 inuptime)result=`$CONNECTION1 | awk '{print $2}'`;;threads)result=`$CONNECTION1 | awk '{print $4}'`;;slow_queries)result=`$CONNECTION1 | awk '{print $9}'`;;avg_time)result=`$CONNECTION1 | awk '{print $22}'`;;bytes_sent)result=`$CONNECTION2 | grep "Bytes_sent" |awk '{print $4}'`;;*)echo "Usage:$0(uptime|threads|slow_queries|avg_time|bytes_sent)"esacecho $result
fi

脚本完成后,我们来测试一下脚本的可行性,结果如下:

可以看出,我们编写的脚本工作正常,可以运行并检测MySQL的一些性能参数。然后我们在zabbix server端上测试一下,结果如下:

可以看出,zabbix server端也运行正常。

1、zabbix web端配置

接下来,我们就可以进行zabbix web端的配置了。大致流程如下:
添加模板——添加监控项——将模板添加到主机上——添加图形。
选择配置——主机,点击图形,如下所示:

进入图形页面后,点击右上角的添加图形页面,并填写名称、以及监控项等内容,结果如下:

完成上述添加后,我们点击下方的“添加”就可以把刚才我们的自定义图形添加上去了,添加完成后的页面如下所示:


2、图形查看

最后,我们来查看一下刚才配置的结果。进入监控——图形页面,选择我们要监控的图形,结果如下:

可以看出,我们已经能够通过自定义的监控项来显示图形了,我们的zabbix监控MySQL性能实战成功!
 

四、监控MySQL主从

1、在slave主机上配置脚本
[root@slave script]# cd /etc/zabbix/
[root@slave zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@slave zabbix]# mkdir script
[root@slave zabbix]# cd script/
[root@slave script]# vim mysql_slave_status.sh
[root@slave script]# cat mysql_slave_status.sh 
#!/bin/bash
USER="root"
PASSWD="123"
NAME=$1function IO {Slave_IO_Running=`mysql -u $USER -p$PASSWD -e "show slave status\G;" 2> /dev/null |grep Slave_IO_Running |awk '{print $2}'`if [ $Slave_IO_Running == "Connecting" ];thenecho 0 elseecho 1 fi
}function SQL {Slave_SQL_Running=`mysql -u $USER -p$PASSWD -e "show slave status\G;" 2> /dev/null |grep Slave_SQL_Running: |awk '{print $2}'`
if [ $Slave_SQL_Running == "Yes" ];then
echo 0 elseecho 1 fi}case $NAME inio)IO;;sql)SQL;;*)echo -e "Usage: $0 [io | sql]"
esac
[root@slave script]# chmod +x mysql_slave_status.sh 
[root@slave script]# chown zabbix.zabbix mysql_slave_status.sh 
[root@slave script]# ll
总用量 4
-rwxr-xr-x 1 zabbix zabbix 631 9月   7 16:31 mysql_slave_status.sh
2、编写一个自配置文件,里面指定上面编写的脚本的路径,然后重启服务
[root@slave script]# cd /etc/zabbix/zabbix_agentd.d/
[root@slave zabbix_agentd.d]# ls
[root@slave zabbix_agentd.d]# vim userparameter_mysql_slave.conf
UserParameter=mysql.slave[*],/etc/zabbix/script/mysql_slave_status.sh $1自定义数值[*代表可用环境变量执行]       接脚本路径        可变量参数
[root@slave zabbix_agentd.d]# chown -R zabbix.zabbix /etc/zabbix/zabbix_agentd.d/userparameter_mysql_slave.conf 
[root@slave zabbix_agentd.d]# ll
总用量 4
-rw-r--r-- 1 zabbix zabbix 73 9月   7 16:36 userparameter_mysql_slave.conf
[root@slave zabbix_agentd.d]# systemctl restart zabbix-agent.service
3、去zabbix server验证状态,使用zabbix_get命令验证,需要先下载zabbix-get软件包
[root@server ~]# yum -y install zabbix-get
Last metadata expiration check: 0:22:40 ago on Wed 07 Sep 2022 04:15:48 PM CST.
Package zabbix-get-4.4.10-1.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@server ~]# zabbix_get -s 192.168.47.200 -k mysql.slave[sql]
0
[root@server ~]# zabbix_get -s 192.168.47.200 -k mysql.slave[io]
0
4、在zabbix web平台配置

新建监控项

在这里插入图片描述
新建触发器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、测试验证,将mysql主从关闭,查看zabbix告警信息,验证邮箱是否能接收到邮件
mysql -u root -predhat -e "stop slave;"
[root@slave zabbix_agentd.d]# mysql -uroot -p123 -e"stop slave;"
[root@slave zabbix_agentd.d]# mysql -uroot -p123 -e"show slave status\G;"
*************************** 1. row ***************************Slave_IO_State: Master_Host: masterMaster_User: userMaster_Port: 3306Connect_Retry: 60Master_Log_File: Read_Master_Log_Pos: 4Relay_Log_File: mariadb-relay-bin.000001Relay_Log_Pos: 4Relay_Master_Log_File: Slave_IO_Running: NoSlave_SQL_Running: No

六、zabbix监控主从延迟

1、配置库脚本
[root@slave zabbix_agentd.d]# cd /etc/zabbix/script/
[root@slave script]# ls
mysql_slave_status.sh
[root@slave script]# vim mysql_delay.sh#!/bin/bash     
delay=$(mysql -uroot -p123 -e 'show slave status\G' 2> /dev/null | grep 'Seconds_Behind_Master' | awk '{print $2}')
if [ $delay == "NULL" ];then
echo 0
elif [ $delay -ge 0 ] && [ $delay -le 200 ];then         
echo 0
else
echo $delay
fi
[root@slave script]# chown -R zabbix.zabbix mysql_delay.sh 
[root@slave script]# chmod +x mysql_delay.sh 
[root@slave script]# ll
总用量 8
-rwxr-xr-x 1 zabbix zabbix 258 9月   7 17:37 mysql_delay.sh
2、配置agentd文件,并重启服务
[root@slave script]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql_slave.conf UserParameter=mysql.slave[*],/etc/zabbix/script/mysql_slave_status.sh $1
UserParameter=check_mysql_delay,/bin/bash /etc/zabbix/script/mysql_delay.sh
[root@slave script]# systemctl restart zabbix-agent.service 
3、zabbix server主机进行脚本测试
[root@slave script]# ./mysql_delay.sh 
0[root@server ~]# zabbix_get -s 192.168.47.200 -k check_mysql_delay
0
4、在zabbix web平台操作

添加监控项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P8VM6SVG-1662560150191)(./1662544335194.png)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/17377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

欧科云链:Web3.0时代 具备链上数据分析能力的公司愈发凸显其价值

在当今激烈的市场竞争中&#xff0c;新兴互联网领域迅速崛起&#xff0c;Web2.0已相对成熟&#xff0c;用户创造数据&#xff0c;但不拥有数据。被视为新的价值互联网的Web3.0&#xff0c;赋予用户真正的数据自主权&#xff0c;它的到来被认为是打破Web2.0垄断的机遇。 在Web3…

迅狐跨境商城系统源码

在当今全球化的商业环境中&#xff0c;跨境电商的兴起为商家提供了无限的可能性。为了满足这一需求&#xff0c;跨境商城系统源码的开发显得尤为重要。本文将探讨跨境商城系统源码的优势&#xff0c;以及如何利用这些优势来构建一个成功的跨境电商平台。 独立开发&#xff0c;…

LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战

LLM 大模型学习必知必会系列(十三)&#xff1a;基于SWIFT的VLLM推理加速与部署实战 1.环境准备 GPU设备: A10, 3090, V100, A100均可. #设置pip全局镜像 (加速下载) pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ #安装ms-swift pip install ms-…

windows11如何安装IIS

目录 IIS是什么&#xff1f; 为什么要配置IIS&#xff1f; 1.打开控制面板进入程序 2.点击启用或者关闭windos功能 3.勾选IIS相关的web项 4.点击确定等待一分钟程序变更即可 5.主页搜索internet 点击进入 6.进入IIS进行查看配置&#xff0c;并测试&#xff0c;也可以浏…

重学java 49 List接口

但逢良辰&#xff0c;顺颂时宜 —— 24.5.28 一、List接口 1.概述: 是collection接口的子接口 2.常见的实现类: ArrayList LinkedList Vector 二、List集合下的实现类 1.ArrayList集合的使用及源码分析 1.概述 ArrayList是List接口的实现类 2.特点 a.元素有序 —> 按照什么顺…

常见SSL证书品牌关系图

常见SSL证书品牌关系图 在SSL证书市场上&#xff0c;有几个主要的品牌和他们之间的复杂关系。以下是一些主要的SSL证书提供商及其关系的简要概述&#xff1a; DigiCert&#xff1a; DigiCert 是最大的SSL证书颁发机构之一。它收购了Symantec的SSL和PKI业务&#xff0c;其中包括…

深度合作!博睿数据联合中国信通院开展公网服务质量评估工作!

近日&#xff0c;中国信息通信研究院&#xff08;简称“中国信通院”&#xff09;算网质量保障工作全面启动&#xff0c;博睿数据&#xff08;bonree.com&#xff0c;股票代码688229&#xff09;作为信通院算网质量测试独家技术支持单位&#xff0c;提供公网服务质量测评整体解…

Linux之多进程

文章目录 c程序获取进程pid和ppid进程相关命令进程的创建多进程进程退出exit()函数_exit函数 进程的等待wait函数waitpid函数 进程的替换进程间的通信一、无名管道二、有名管道三、信号kill函数raise函数pause() 函数自定义信号处理函数SIGALARM信号子进程退出信号SIGCHLD 四、…

基于mybatis-plus的多语言扩展

概览 对于表中字段&#xff0c;需要实现多语言的方案探讨&#xff1a; 1.表中横向扩展多个字段分别存储中文&#xff0c;英文&#xff0c;俄语等语言字段&#xff0c;查询时&#xff0c;根据需要查询的语言&#xff0c;进行查询 2.增加一张多语言表&#xff0c;存储多语言信…

IC开发——VCS基本用法

1. 简介 VCS是编译型verilog仿真器&#xff0c;处理verilog的源码过程如下&#xff1a; VCS先将verilog/systemverilog文件转化为C文件&#xff0c;在linux下编译链接生成可执行文件&#xff0c;在linux下运行simv即可得到仿真结果。 VCS使用步骤&#xff0c;先编译verilog源…

STM32--ADC

一、简介 *ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 *ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 *12位逐次逼近型ADC&#xff0c;1us转换时间 *输入电压范围&#xff1a;0~3.3V&…

redisson 释放分布式锁 踩坑

java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node id: 48c213c9-1945-4c1b-821e-6d32e347eb44 thread-id: 69 出错代码&#xff1a; private void insertHourLog(Timestamp lastHourStartTimeStamp) {RLock lock red…

leetcode 1241每个帖子的评论数(postgresql)

需求 编写 SQL 语句以查找每个帖子的评论数。 结果表应包含帖子的 post_id 和对应的评论数 number_of_comments 并且按 post_id 升序排列。 Submissions 可能包含重复的评论。您应该计算每个帖子的唯一评论数。 Submissions 可能包含重复的帖子。您应该将它们视为一个帖子。…

BI工具如何为金融行业带来变革?金融行业营销管理策略大揭秘

当今数字化时代&#xff0c;金融行业正经历着前所未有的变革。随着大数据、人工智能、区块链等新兴技术的兴起&#xff0c;金融机构正面临着重新定义服务模式、风险管理和客户体验的挑战。商业智能&#xff08;BI&#xff09;作为这一变革的关键驱动力&#xff0c;已经成为金融…

ComfyUI工作流网站

https://openart.ai/home https://comfyworkflows.com/ https://civitai.com/

claude3国内API接口对接

众所周知&#xff0c;由于地理位置原因&#xff0c;Claude3不对国内开放&#xff0c;而国内的镜像网站使用又贵的离谱&#xff01; 因此&#xff0c;团队萌生了一个想法&#xff1a;为什么不创建一个一站式的平台&#xff0c;让用户能够通过单一的接口与多个模型交流呢&#x…

视频营销的智能剪辑:Kompas.ai如何塑造影响力视频内容

引言&#xff1a; 在当今数字化的营销领域&#xff0c;视频内容已经成为品牌吸引用户注意力、建立品牌形象和提升用户参与度的重要方式。然而&#xff0c;要想制作出具有影响力的视频内容&#xff0c;并不是一件容易的事情。这就需要借助先进的技术和工具&#xff0c;如人工智能…

2024开放式蓝牙耳机推荐,五款性价比最高的耳机推荐

在我们的日常生活中&#xff0c;无论是上下班通勤还是锻炼身体&#xff0c;耳机都是我们放松心情、驱散无聊的好伙伴。不过&#xff0c;面对市场上不断涌现的开放式蓝牙耳机&#xff0c;挑选一款既符合个人喜好又满足需求的产品&#xff0c;确实需要一些技巧。今天&#xff0c;…

springboot实现多开发环境匹配置

首先logbok-spring.xml里面的内容 <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 开发、测试环境 --><springProfile name"dev,test"><include resource"org/springframework/boot/logging/log…

【国信华源:以专业服务,协助水利厅抵御强暴雨】

5月18日-19日&#xff0c;广西出现入汛以来最强暴雨天气过程&#xff0c;钦州、防城港、北海、南宁等地出现特大暴雨&#xff0c;多地打破降雨量极值。国信华源技术团队积极行动驻守一线&#xff0c;为打好山洪灾害防御的提前战、主动战提供了技术支撑。 5月17日18时&#xff0…