当前位置: 首页 > news >正文

Zabbix监控MySQL性能实战指南

当今的数据驱动世界中,确保数据库的高效运行和稳定性至关重要。MySQL作为最流行的开源关系型数据库管理系统之一,在企业级应用中被广泛采用。为了维护MySQL的健康状态,使用Zabbix进行实时监控是必不可少的。本文将详细介绍如何利用Zabbix来监控MySQL服务。

MySQL监控的重要性

MySQL数据库的性能直接影响到应用程序的表现。因此,对关键性能指标(KPIs)进行持续监控可以帮助你及时发现并解决潜在问题。以下是几个重要的监控方面:

监控 MySQL 服务

percona 提供了相关的监控MySQL的插件,不过此项目已经不再开发,官网访问链接已经从首页删除,只能直接从下面链接访问

https://www.percona.com/downloads/percona-monitoring-plugins/

监控MySQL 状态

使用 MySQL 自定义模板,监控mysql性能,可以监控如下内容:OPS(增删改查)、mysql请求流量带宽,mysql响应流量带宽

[root@rocky9 ~]#yum install -y mysql-server
[root@rocky9 ~]#systemctl enable --now mysqld
[root@rocky9 ~]#mysql -e 'create user zabbix@"localhost" identified by "123456"'
[root@rocky9 ~]#grep "^Include" /etc/zabbix/zabbix_agent2.conf 
Include=/etc/zabbix/zabbix_agent2.d/*.conf
Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf[root@rocky9 ~]#vim /etc/zabbix/zabbix_agent2.d/check_mysql.sh
result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"` 
#!/bin/bash
#!/bin/bash
MYSQL_USER='zabbix'
MYSQL_PWD='123456'
MYSQL_HOST='127.0.0.1'
MYSQL_PORT='3306'
MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"
#MYSQL_CONN=mysql -e "show global status" | awk -v s=$1 '$1 ~ "^"s"$"{print $2}'if [ $# -ne "1" ];then
echo "arg error!" 
fi
case $1 inThreads)
result=`${MYSQL_CONN} status |awk '{print $4}'`;;Uptime)
result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`;;Com_update)
result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3` ;;Slow_queries)
result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`;;Com_select)
result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3` ;;Com_rollback)
result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`;;Questions)
result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`;;Com_insert)
result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`;;Com_delete)
result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`;;Com_commit)
result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`;;Bytes_sent)
result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`;;Bytes_received)
result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut d"|" -f3`;;Com_begin)
result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3`;;*)
echo 
"Usage:$0(Threads|Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)";;
esac
echo $result
[root@rocky9 ~]#chmod +x /etc/zabbix/zabbix_agent2.d/check_mysql.sh [root@rocky9 ~]#vim /etc/zabbix/zabbix_agent2.d/mysql.conf
UserParameter=mysql_version,mysql -V
UserParameter=mysql_status[*],/etc/zabbix/zabbix_agent2.d/check_mysql.sh $1 2> /dev/null
UserParameter=mysql_ping,mysqladmin -uzabbix -p123456 -P3306 -h127.0.0.1  ping 2>/dev/null | grep -c alive[root@rocky9 ~]#systemctl restart zabbix-agent2.service [root@zabbix-server ~]#zabbix_get  -s 192.168.1.7 -p 10050 -k 'mysql_version'
mysql  Ver 8.0.41 for Linux on x86_64 (Source distribution)
[root@zabbix-server ~]#zabbix_get  -s 192.168.1.7 -p 10050 -k 'mysql_ping'
1
[root@zabbix-server ~]#zabbix_get  -s 192.168.1.7 -p 10050 -k 'mysql_status[Uptime]'
54606
[root@zabbix-server ~]#zabbix_get  -s 192.168.1.7 -p 10050 -k 'mysql_status[Slow_queries]'
0

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

在这里插入图片描述

监控MySQL主从复制

Agent端配置

[root@rocky9 zabbix_agent2.d]#vim mysql_repl_status.sh
#!/bin/bash
KEY=$1
PASS='123456'
mysql -uroot -p$PASS -e "show slave status\G"|grep "${KEY}"|awk '{print $NF}'[root@rocky9 zabbix_agent2.d]#chmod +x mysql_repl_status.sh 
[root@rocky9 zabbix_agent2.d]#vim mysql.conf 
UserParameter=mysql_repl_status[*],/etc/zabbix/zabbix_agent2.d/mysql_repl_status.sh "$1"
[root@rocky9 zabbix_agent2.d]#systemctl restart zabbix-agent2.service [root@zabbix-server ~]#zabbix_get  -s 192.168.1.7 -p 10050 -k 'mysql_repl_status[Slave_SQL_Running]'
[root@zabbix-server ~]#zabbix_get  -s 192.168.1.7 -p 10050 -k 'mysql_repl_status[Slave_IO_Running]
[root@zabbix-server ~]#zabbix_get  -s 192.168.1.7 -p 10050 -k 'mysql_repl_status[Second_Behind_Master]

配置 zabbix web

点击数据采集
选择模板
点击创建模板
模板创建完成,点击监控项,添加三个监控项
注意:线程状态的监控项的信息类型为字符,复制延时的监控项为数字
创建触发器,添加两个触发器

#触发器1:名称:复制线程异常, 两个复制线程状态都要为 Yes 
{Template MysQL slave {Temp1ate MySQL repl 
status:mysql.repl.status[Slave_IO_Running].str(Yes)}=0 or {Template MySQL repli 
status :mysql.repl.status[Slave_SQL_Running].str(Yes)}=0#触发器2: 名称:复制延时不超过100s
{Template MysQL repl 
status:mysql.repl.status[Second_Behind_Master].last()]}>=100

关联到对应的主机

通过以上步骤,你可以使用Zabbix有效地监控MySQL实例,快速响应任何可能影响数据库性能的问题,从而确保系统的稳定性和高效性。希望这篇文章能够帮助你更好地理解和实施MySQL的监控策略,进一步优化你的数据库管理和维护流程。

http://www.dtcms.com/a/321024.html

相关文章:

  • OpenAI 正式发布 GPT-5:架构与性能全解析
  • 【深度学习1】什么是神经网络
  • TDSQL GTS文件说明
  • SQL的多表连接查询(难点)
  • 【代码随想录day 15】 力扣 110.平衡二叉树
  • 总结运行CRMEB标准版(uniapp)微信小程序的问题
  • Spring Boot 优雅配置InfluxDB3客户端指南:@Configuration + @Bean + yml实战
  • 配置MyBatis SQL日志打印
  • 机器学习-----SVM(支持向量机)算法简介
  • PEV2(PostgreSQL Explain Visualizer 2)
  • 云平台运维工具 —— 阿里云原生工具
  • 2025年最新Java后端场景题+八股文合集(100w字面试题总结)
  • 「双训智伴」:重构人犬协同的智能训练生态系统
  • 基于 C++ 的湍流数值模拟理论报告
  • 无人机遥控器教练模式技术要点
  • Go 踩过的坑之协程参数不能过大
  • Chat GPT5功能
  • ESP32-menuconfig(3) -- Serial flasher config
  • 宁商平台税务升级之路:合规为纲,服务为本
  • 唯品会以图搜图(拍立淘)API接口调用指南详解
  • Vite React项目引入unocss 及 @unocss/preset-icons的使用
  • Mac安装python、conda环境教程
  • 相机坐标系与世界坐标系的点相互转换:原理、可视化与实践
  • Spring MVC REST API设计详解:从零构建高效接口
  • 2025 TexLive+VScode排版IEEE TGRS论文
  • 使用 Gulp 替换 XML 文件内容
  • SpringMVC(四)
  • 跨平台音乐管理新方案:Melody如何实现一站式音源整合
  • 设计模式(二)——策略模式
  • MySQL 索引详细说明