MySQL 性能监控实战:从零搭建 Prometheus + Grafana 监控告警体系(附排查 SOP)

news2026/5/23 23:22:45
今日关键词性能监控、PMM、Prometheus、Grafana、慢查询、告警、指标体系大家好我是数据库小学妹前面我们学习了锁机制、MVCC、慢查询诊断这些事后分析的技术。但你知道“数据库目前处于什么状态QPS 多少Buffer Pool 命中率是什么水平吗”听到QPS、命中率这些词是不是很懵所以SQL写得好是一回事知道数据库在跑什么状态是另一回事。今天把我从零学监控的经历整理出来新手也能从零搭建。一、为什么需要监控先讲一个案例某平台电商大促系统突然变慢。开发找运维运维找 DBADBA 说等我连上去看看。这一套流程走了 15 分钟用户已经跑到竞品下单了。如果有一套监控慢查询超过阈值就自动告警早在用户察觉之前就能介入。监控能帮你做什么目的具体场景实时感知QPS 突然掉底、连接数打满立刻知道故障预警Buffer Pool 命中率下降提前扩容排障加速出问题时不用我觉得慢了直接看指标容量规划过去三个月 QPS 趋势决定什么时候扩容数据这东西不会说谎。嘴上说不慢没用监控图表才说了算。二、监控的五维指标体系搞监控第一件事不是选工具而是搞清楚该看什么。我把 MySQL 的核心指标分成五个维度 维度 1资源使用指标含义告警阈值参考CPU 使用率MySQL 进程 CPU 占用 80% 持续 5 分钟内存使用InnoDB Buffer Pool 占用实际使用 可用内存 90%磁盘 IO每秒读写次数 IOPS写 IO 延迟 20ms磁盘空间数据目录可用空间 20%网络吞吐每秒收发流量接近带宽上限这些指标别在 MySQL 里查用系统命令更快# CPUtop-p$(pgrep mysqld)-n1# 内存free-h# 磁盘 IOiostat-x13# 磁盘空间df-h/var/lib/mysql 维度 2连接与线程-- 当前连接数 vs 最大连接数SHOWVARIABLESLIKEmax_connections;SHOWSTATUSLIKEThreads_connected;-- 查看连接来源和状态SELECTuser,host,db,command,time,stateFROMinformation_schema.processlistWHEREcommand!SleepORDERBYtimeDESC;连接池满了最常见的问题——用户报无法连接数据库大概率是连接数被打满。 维度 3查询性能-- QPS 近似计算两次查询间隔内的差值SHOWSTATUSLIKEQuestions;SHOWSTATUSLIKEUptime;-- 慢查询数量SHOWSTATUSLIKESlow_queries;-- 全表扫描次数SHOWSTATUSLIKESelect_scan;关注三个关键指标QPS 突降→ 可能有锁等待Slow_queries 飙升→ SQL 性能退化或缺少索引Select_scan 增长→ 全表扫描增多 维度 4InnoDB 引擎-- Buffer Pool 命中率核心指标SHOWSTATUSLIKEInnodb_buffer_pool_read%;-- 公式1 - (Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests) × 100%-- 目标 99%-- 行锁等待SHOWSTATUSLIKEInnodb_row_lock_waits;SHOWSTATUSLIKEInnodb_row_lock_time;-- 脏页比例SHOWSTATUSLIKEInnodb_buffer_pool_pages%;Buffer Pool 命中率是我最关注的指标之一。低于 98% 说明内存不够用了该扩了。 维度 5主从同步SHOWSLAVESTATUS\G-- 关注两个字段-- Seconds_Behind_Master延迟-- Slave_IO_Running / Slave_SQL_Running必须都是 Yes三、三层工具选型 新手级PMMPercona Monitoring and ManagementPMM 是 Percona 开源的监控平台基于 Prometheus Grafana开箱即用。安装docker 一把梭# 拉取 PMM Serverdockerrun-d-p80:80-p443:443\--namepmm-server\percona/pmm-server:2# 在 MySQL 机器上安装 PMM Clientyuminstallpmm2-client# 或apt-getinstallpmm2-client# 注册客户端到服务端pmm-admin config --server-insecure-tls --server-urlhttps://admin:adminpmm-server-ip然后刷浏览器打开 PMM 面板你会看到一个详细的仪表盘——QPS、连接数、Buffer Pool 命中率、慢查询趋势全在里面。 进阶级搭建你自己的 Grafana 面板PMM 好用但如果你已经有 Prometheus 体系自己搭一套更灵活。架构MySQL → mysqld_exporter → Prometheus → Grafana步骤 1安装 mysqld_exporter# 创建监控用户CREATEUSERexporter%IDENTIFIED BYpassword;GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TOexporter%;# 安装运行wgethttps://github.com/prometheus/mysqld_exporter/releases/latest ./mysqld_exporter--mysqld.usernameexporter--mysqld.passwordpassword步骤 2Prometheus 配置# prometheus.yml-job_name:mysqlstatic_configs:-targets:[your-mysql-host:9104]步骤 3Grafana 仪表盘Grafana 有现成的 MySQL 仪表盘模板Dashboard ID: 7362MySQL OverviewDashboard ID: 9623MySQL InnoDB Metrics导入就能用不用从零画图。 兜底级纯 SQL 脚本不是所有环境都能装监控工具。开发环境、内网测试库有时候只能自己跑 SQL 看-- 一键快照脚本适合做定时任务SELECTNOW()ASsnapshot_time;SELECT--- QPS ---ASindicator;SELECTROUND(QUESTIONS/UPTIME,2)CURRENT_QPS,ROUND(QUESTIONS/UPTIME,2)AVG_QPSFROM(SELECTVARIABLE_VALUEASQUESTIONSFROMperformance_schema.global_statusWHEREVARIABLE_NAMEQuestions)q,(SELECTVARIABLE_VALUEASUPTIMEFROMperformance_schema.global_statusWHEREVARIABLE_NAMEUptime)u;SELECT--- Buffer Pool 命中率 ---ASindicator;SELECTCONCAT(ROUND((1-reads/requests)*100,2),%)ASbuffer_hit_rateFROM(SELECT(SELECTVARIABLE_VALUEFROMperformance_schema.global_statusWHEREVARIABLE_NAMEInnodb_buffer_pool_reads)ASreads,(SELECTVARIABLE_VALUEFROMperformance_schema.global_statusWHEREVARIABLE_NAMEInnodb_buffer_pool_read_requests)ASrequests)t;SELECT--- 连接数 ---ASindicator;SELECT(SELECTVARIABLE_VALUEFROMperformance_schema.global_statusWHEREVARIABLE_NAMEThreads_connected)AScurrent,(SELECTVARIABLE_VALUEFROMperformance_schema.global_variablesWHEREVARIABLE_NAMEmax_connections)ASmax;放到 crontab 里每 5 分钟跑一次输出到文件自己整理看趋势。四、告警规则怎么设有监控没告警等于闭着眼睛开车。生产环境最必要的几条告警告警项条件级别连接数过多当前连接 最大连接 × 0.8P1紧急慢查询骤增5 分钟内慢查询 50P2重要Buffer Pool 命中率下降 95% 持续 10 分钟P2重要磁盘空间不足 10% 可用P1紧急主从延迟 10 秒持续 5 分钟P2重要QPS 突降下降 50% 持续 3 分钟P1紧急告警通知渠道P1→ 短信 电话 IM 群通知P2→ IM 群通知 邮件别把所有告警都设成 P1不然会被狼来了效应淹没。五、监控实战 checklist这是我学监控的计划按这个顺序来对新手友好Phase 1先看第 1 周# 每天跑一遍感受数据库的脉搏SHOW STATUS;SHOW ENGINE INNODB STATUS\G SHOW PROCESSLIST;不用监控工具每天手动跑几次这些命令感受一下 QPS、连接数、慢查询的变化。先建立手感。Phase 2再看第 2-3 周安装 PMM导入默认仪表盘学会看 QPS 趋势图、慢查询列表每天看一眼 Buffer Pool 命中率Phase 3会报警第 4 周配置连接数告警P1配置慢查询告警P2确认告警通道畅通Phase 4能排障持续梳理常见性能问题的监控排查路径把排查经验写成 SOP六、我的排查 SOP三步定位法当告警响起按这三步来第一步全局扫一眼QPS ↓ 50% → 继续 ↓ 连接数 ↑ 300% → 连接池打满 → 可能是慢查询导致连接堆积 慢查询 ↑ 10x → 确认有慢查询 → 进入第二步第二步定位慢查询元凶-- 查当前正在跑的慢 SQLSELECTtrx_mysql_thread_idASthread_id,trx_queryAScurrent_sql,TIMESTAMPDIFF(SECOND,trx_started,NOW())ASrunning_secondsFROMinformation_schema.innodb_trxWHEREtrx_stateRUNNINGORDERBYrunning_secondsDESC;-- 或者从慢查询日志查历史-- 先确认慢查询日志是否开启SHOWVARIABLESLIKEslow_query_log;-- 分析最近 50 条慢查询mysqldumpslow-t50/var/lib/mysql/slow.log第三步分析慢查询用 EXPLAIN 看执行计划这个我们之前的文章详细讲过定位是全表扫描还是索引没走对。这套流程在大促值班时用过一次凌晨 2 点 QPS 掉底告警顺着三步走3 分钟定位到一个缓存过期导致的 full join扩容后恢复正常。七、今日学习心得监控不是装完工具就完事指标体系设计比工具重要五个维度资源/连接/查询/引擎/主从覆盖 90% 的性能问题PMM 适合新手快速上手Prometheus Grafana 适合有基础的自己定制告警要分级别把 P2 的事设成 P1先建立手感再上工具——顺序很重要 我是数据库小学妹一个用设计师思维学数据库的转行人。我们一起用监控让数据库问题早发现、早解决本文示例基于 MySQL 8.0 InnoDB。不同环境配置可能有差异请结合实际调整。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…