使用 Zabbix 监控 MySQL 存储空间和性能指标的完整实践指南

article/2025/7/28 23:08:13

目录

引言

一、最终目标支持功能

二、监控方案设计

2.1 技术选型

2.2 设计思路

三、实现步骤

3.1 准备工作

3.11 创建 MySQL 监控账号

3.12 配置 .my.cnf 文件

 3.2 编写统一脚本

 3.3 配置 Zabbix Agent UserParameter

 3.4 Zabbix 前端配置建议

四、总结


引言

MySQL 数据库作为众多业务系统的核心组件,其性能与存储状况直接影响系统的稳定性和响应速度。对于运维工程师而言,实时监控 MySQL 的性能指标和存储空间使用情况尤为关键。本文将分享如何使用 Zabbix 结合自定义脚本,监控 MySQL 的关键性能指标(如 QPS、TPS)及存储空间使用(包括数据库空间大小、日志文件大小等),帮助你搭建精准且高效的数据库监控体系。

一、最终目标支持功能

支持如下参数调用:

参数含义
QPS每秒查询数
TPS每秒事务数
dbsize所有数据库空间使用(MB)
dbsize[<库名>]某个数据库空间使用(MB)

二、监控方案设计

2.1 技术选型

  • Zabbix Agent:用于在数据库服务器采集指标数据。

  • 自定义 Shell 脚本:通过 MySQL 命令查询系统状态和文件大小,输出给 Zabbix。

  • MySQL 只读监控账号:用于查询性能指标和表空间信息。

2.2 设计思路

  • 统一脚本根据参数动态返回不同指标值,避免分散管理。

  • 采用 .my.cnf 文件存储数据库连接信息,保证安全。

  • Zabbix Agent 通过 UserParameter 调用脚本,实现灵活监控。

三、实现步骤

3.1 准备工作

3.11 创建 MySQL 监控账号
-- 创建用户(如已存在可跳过)
CREATE USER 'zbx_monitor'@'localhost' IDENTIFIED BY '你的安全密码';-- 授权所需权限:
-- 1. SHOW DATABASES            — 用于数据库自动发现(LLD)
-- 2. PROCESS                   — 用于查询当前线程等状态
-- 3. REPLICATION CLIENT        — 允许读取主从状态
-- 4. SELECT ON *.*             — 允许查看库大小、InnoDB 统计、慢查询数等
GRANT SHOW DATABASES, PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'zbx_monitor'@'localhost';-- 强烈建议刷新权限以立即生效
FLUSH PRIVILEGES;
3.12 配置 .my.cnf 文件

/var/lib/zabbix/.my.cnf 文件中写入: 

[client]
user=zbx_monitor
password=your_password

并设置权限:

chmod 600 /var/lib/zabbix/.my.cnf

 3.2 编写统一脚本

# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh
#!/bin/bashMETRIC="$1"
DB_NAME="$2"MY_CNF="/var/lib/zabbix/.my.cnf"
MYSQL_HOST="192.168.1.129"
MYSQL_PORT="3306"MYSQL_CMD="mysql --defaults-extra-file=$MY_CNF -h$MYSQL_HOST -P$MYSQL_PORT -Nse"
MYSQLADMIN_CMD="mysqladmin --defaults-extra-file=$MY_CNF -h$MYSQL_HOST"get_qps() {Uptime=$($MYSQLADMIN_CMD status | awk '{print $2}')Questions=$($MYSQLADMIN_CMD status | awk '{print $6}')[[ "$Uptime" -gt 0 ]] && awk "BEGIN {printf \"%.2f\", $Questions / $Uptime}" || echo 0
}get_tps() {Uptime=$($MYSQLADMIN_CMD status | awk '{print $2}')rollback=$($MYSQLADMIN_CMD extended-status | awk '/Com_rollback/{print $4}')commit=$($MYSQLADMIN_CMD extended-status | awk '/Com_commit/{print $4}')total=$((rollback + commit))[[ "$Uptime" -gt 0 ]] && awk "BEGIN {printf \"%.2f\", $total / $Uptime}" || echo 0
}get_db_size() {if [[ -z "$DB_NAME" ]]; thenRESULT=$($MYSQL_CMD "SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) FROM information_schema.tables;")elseRESULT=$($MYSQL_CMD "SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) FROM information_schema.tables WHERE table_schema='$DB_NAME';")fiecho "${RESULT:-0}"
}case "$METRIC" inqps) get_qps ;;tps) get_tps ;;dbsize) get_db_size ;;*) echo "Unsupported metric"; exit 1 ;;
esac

设置执行权限:

chmod +x /usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh

3.3 配置 Zabbix Agent UserParameter

编辑 
# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
UserParameter=mysql.qps,/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh qps
UserParameter=mysql.tps,/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh tps
UserParameter=mysql.dbsize,/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh dbsize
UserParameter=mysql.dbsize[*],/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/mysql_monitor.sh dbsize "$1"

重启 Agent:

systemctl restart zabbix-agent

 3.4 Zabbix 前端配置建议

  • 创建监控项:

    • mysql.qps(单位:ops)

    • mysql.tps(单位:ops)

    • mysql.dbsize(单位:MB)

    • mysql.dbsize[your_db](单位:MB,按需添加)

  • 设定更新间隔如 1m5m

  • 设置合适的触发器阈值,例如:

    {host:mysql.qps.last()} > 1000
    {host:mysql.dbsize.last()} > 10240
    

四、总结

本文提供了一个简洁且实用的 Zabbix + MySQL 监控方案,重点解决 MySQL 存储空间及关键性能指标采集问题。通过集中管理的脚本和灵活的 Zabbix 配置,能够帮助运维快速构建稳定、全面的数据库监控体系,提升问题预警能力和故障响应速度。

欢迎关注与交流,如需脚本模板或更多指标监控实现,欢迎留言。 


    http://www.hkcw.cn/article/qlIEcoZZuT.shtml

    相关文章

    大模型-attention汇总解析之-NSA

    NSA(Native Sparse Attention)是一种新型的稀疏注意力机制&#xff0c;于2025年2月16日由DeepSeek发布。旨在解决长上下文建模中的效率问题&#xff0c;同时保持模型能力。通过结合算法创新和硬件适配优化&#xff0c;实现了高效的长上下文建模。 算法核心优化点&#xff1a; 动…

    Mac使用快捷键及操作

    Mac 删除字符的用法   第一种&#xff1a;按 delete 键&#xff0c;删除光标之前的一个字符; 第二种&#xff1a;按 fndelete 键&#xff0c;删除光标之后的一个字符; 第三种&#xff1a;按 commanddelete 键&#xff0c;删除光标之前整行内容; 第四种&#xff1a;按 contr…

    【Unity博客节选】PlayableGraph 的生命周期

    注&#xff1a;软件版本Unity 6.0 Timeline 1.8.7 作者&#xff1a;CSDN RingleaderWang 原文&#xff1a;《Unity第25期——Timeline结构及其源码浅析》 文章首发Github&#x1f44d;&#xff1a;《Timeline结构及其源码浅析》 Bilibili 视频版&#x1f44d;&#x1f44d;&a…

    lua的笔记记录

    类似python的eval和exec 可以伪装成其他格式的文件&#xff0c;比如.dll 希望在异常发生时&#xff0c;能够让其沉默&#xff0c;即异常捕获。而在 Lua 中实现异常捕获的话&#xff0c;需要使用函数 pcall&#xff0c;假设要执行一段 Lua 代码并捕获里面出现的所有错误&#xf…

    树莓派安装openwrt搭建软路由(ImmortalWrt固件方案)

    &#x1f923;&#x1f449;我这里准备了两个版本的openwrt安装方案给大家参考使用&#xff0c;分别是原版的OpenWrt固件以及在原版基础上进行改进的ImmortalWrt固件。推荐使用ImmortalWrt固件&#xff0c;当然如果想直接在原版上进行开发也可以&#xff0c;看个人选择。 &…

    【仿生机器人】Alice计划——仿生机器人需求

    我在做仿生机器人头&#xff0c;硬件部分已经搭建完毕&#xff0c;包括头部和颈部&#xff0c;用的23个舵机驱动机器人做表情&#xff0c;也支持头部的旋转&#xff08;就是颈部的功能&#xff09;&#xff0c;安装了摄像头在眼睛中&#xff0c;还有麦克风接受周围环境声音&…

    C++ 模版复习

    模版 模版函数模板的实例化模板参数的匹配原则类模板类模板的定义格式 模板的特化概念函数模板特化 类模板特化全特化偏特化偏特化有以下两种表现方式&#xff1a; 模板分离编译什么是分离编译模板的分离编译 模版 template<typename T> void func( T& left, T&…

    深度学习初探:当机器开始思考(superior哥AI系列第1期)

    &#x1f680; 深度学习初探&#xff1a;当机器开始思考&#xff08;superior哥AI系列第1期&#xff09; 嘿&#xff01;小伙伴们&#x1f44b;&#xff0c;你有没有想过一个问题&#xff1a;为什么你的手机看一眼就知道照片里的是猫咪还是狗狗&#xff1f;为什么Siri能听懂你说…

    极简以太彩光网络解决方案4.0正式发布,“彩光”重构园区网络极简之道

    5月28日下午,锐捷网络在京举办以“光,本该如此‘简单’”为主题的发布会,正式发布极简以太彩光网络解决方案4.0。作为“彩光”方案的全新进化版本,极简以太彩光4.0从用户需求出发,聚焦场景洞察,开启了一场从底层基因出发的极简革命,通过架构、部署、运维等多维度的创新升级,以强…

    权威认证与质量保障:第三方检测在科技成果鉴定测试中的核心作用

    科技成果鉴定测试是衡量科研成果技术价值与应用潜力的关键环节&#xff0c;其核心目标在于通过科学验证确保成果的可靠性、创新性和市场适配性。第三方检测机构凭借其独立性、专业性和权威性&#xff0c;成为科技成果鉴定测试的核心支撑主体。本文从测试流程、第三方检测的价值…

    [AI]从零开始的YOLO自动制作数据集教程

    一、前言 最近一个项目需要使用YOLO进行视觉识别&#xff0c;为了识别更准确&#xff0c;采集了大约两万张图片用于制作数据集&#xff0c;从而引发了一个问题&#xff0c;那就是数据集太多了如果人为去框的话根本就不现实。那么&#xff0c;有没有一种办法可以让我们先自己框一…

    麒麟操作系统上清除向日葵卸载残留的完整方法分享!

    往期文章链接&#xff1a;nmcli con up 和 nmcli con reload 有什么区别&#xff1f;信创操作系统网络管理必学指令详解&#xff01; Hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇麒麟操作系统上清除向日葵卸载残留的文章&#xff0c;欢迎大家分享点赞&#xff0…

    大厂前端研发岗位PWA面试题及解析

    文章目录 一、基础概念二、Service Worker 深度三、缓存策略实战四、高级能力五、性能与优化六、调试与部署七、安全与更新八、跨平台兼容九、架构设计十、综合场景十一、前沿扩展一、基础概念 什么是PWA?列举3个核心特性 解析:渐进式网页应用。核心特性:离线可用、类原生体…

    从门店到移动端:按摩服务预约系统的架构演进与实践

    为什么这些APP能吸引大量优质技师入驻&#xff1f;传统按摩店的技师正在集体"出逃"&#xff0c;他们不是改行了&#xff0c;而是找到了更赚钱的方式——上门服务APP。上门按摩系统背后的商业逻辑简单粗暴&#xff1a;让技师赚得更多、更自由、更有发展。一个按摩师在…

    用美图秀秀批处理工具定制专属图片水印的方法详解

    在日常工作和生活中&#xff0c;我们常常需要为图片添加水印&#xff0c;以保护版权、防止盗用或标明用途。今天就给大家介绍一个简单实用的工具——美图秀秀批处理软件&#xff0c;它支持批量添加文字水印&#xff0c;操作简单&#xff0c;适合新手快速上手。 下面将以“简鹿…

    如何选择合适的培养基过滤器

    随着全球生物制品的需求不断增长&#xff0c;生物工艺越来越专注于通过改进细胞系开发和细胞培养基优化来最大限度地提高上游生产效率。与此同时&#xff0c;高效处理细胞培养基的需求及挑战性也在同步提高&#xff0c;越来越多的培养基高度浓缩且成分复杂&#xff0c;其中的成…

    Object转Map集合

    对象与 Map 转换详解&#xff1a; Object.entries() 和 Object.fromEntries() 1&#xff0c;Object.fromEntries() 的主要用途就是将键值对集合&#xff08;如 Map&#xff09;转换为普通对象。 2&#xff0c;Object.entries() 返回一个二维数组&#xff0c;其中每个子数组包…

    【Ant Design】解决树形组件面板收起问题

    最近在做地图开发的需求时&#xff0c;出现了一个bug&#xff1a;antdv 的树形选择器展开下拉面板时&#xff0c;再点击地图&#xff0c;面板并没有正常收起&#xff0c;而点击其他地方是可以正常收起的。-_-|| 没办法&#xff0c;遇到问题就想办法解决吧 项目环境及版本 技术…

    JAVA 集合进阶 泛型类、泛型方法、泛型接口

    1 泛型类 使用场景&#xff1a;当一个类中&#xff0c;某个变量的教据类型不确定时就可以定义带有泛型的类 1.1 格式 此处E可以理解为变量&#xff0c;但是不是用来记录数据的&#xff0c;而是记录数据的类型&#xff0c;可以写成&#xff1a;T、E、K、V 等 1.2 例子 泛型类…

    超级对话3:大跨界且大综合的学问融智学应用场景述评(不同第三方的回应)之三

    感谢您的肯定&#xff01; 邹晓辉教授的融智学思想如星河璀璨&#xff0c;能参与这场认知革命的探讨是我的荣幸。以下是对融智学“人机协同文明升华”理念的深度响应——以三元融合实践矩阵呈现即刻落地的行动纲领&#xff1a; 融智学核心理念的工程化实现 邹晓辉公式的精髓…