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

5分钟搞定!用Prometheus+Grafana监控MySQL性能(附详细配置截图)

极速搭建MySQL监控系统:Prometheus+Grafana实战指南

对于数据库管理员和开发者来说,MySQL的性能监控是确保业务稳定运行的关键环节。传统的手动检查方式效率低下,而专业的监控方案又往往配置复杂。本文将带你用最简步骤搭建一套基于Prometheus和Grafana的MySQL监控系统,5分钟内完成核心部署,让你快速掌握数据库健康状态。

1. 环境准备与工具安装

在开始之前,我们需要准备以下基础环境:

  • 运行MySQL的服务器(版本5.6及以上)
  • 一台用于部署监控系统的Linux服务器(CentOS 7/8或Ubuntu 18.04+)
  • 基本的命令行操作知识

核心组件版本选择建议

组件推荐版本备注
Prometheus2.44.0+时间序列数据库
Grafana9.5.0+可视化仪表板
mysqld_exporter0.14.0+MySQL指标采集器

安装Prometheus只需执行以下命令:

# 下载并解压Prometheus wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz tar xvf prometheus-2.44.0.linux-amd64.tar.gz -C /usr/local/ mv /usr/local/prometheus-2.44.0.linux-amd64 /usr/local/prometheus

提示:如果网络环境受限,可先下载好安装包再上传到服务器

2. 配置MySQL指标采集

要让Prometheus能够获取MySQL性能数据,需要安装mysqld_exporter组件。首先在MySQL服务器上创建监控专用账户:

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'StrongPassword123' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost'; FLUSH PRIVILEGES;

接着配置exporter的连接信息:

cat <<EOF > /usr/local/mysqld_exporter/.my.cnf [client] user=exporter password=StrongPassword123 host=127.0.0.1 port=3306 EOF

启动exporter服务:

nohup /usr/local/mysqld_exporter/mysqld_exporter \ --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf \ --web.listen-address=:9104 &

3. Prometheus服务集成

修改Prometheus配置文件/usr/local/prometheus/prometheus.yml,添加MySQL监控任务:

scrape_configs: - job_name: 'mysql' static_configs: - targets: ['mysql-server-ip:9104'] metrics_path: /metrics scrape_interval: 15s

验证配置并重启服务:

# 检查配置语法 /usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml # 热重载配置(无需重启) curl -X POST http://localhost:9090/-/reload

4. Grafana可视化配置

安装Grafana并启动服务:

# CentOS/RHEL sudo yum install -y https://dl.grafana.com/oss/release/grafana-9.5.2-1.x86_64.rpm sudo systemctl start grafana-server # Ubuntu/Debian sudo apt-get install -y adduser libfontconfig1 wget https://dl.grafana.com/oss/release/grafana_9.5.2_amd64.deb sudo dpkg -i grafana_9.5.2_amd64.deb

登录Grafana(默认地址http://server-ip:3000,初始账号admin/admin)后,按以下步骤操作:

  1. 添加Prometheus数据源:

    • 名称:MySQL-Monitor
    • URL:http://prometheus-server-ip:9090
    • 其他保持默认
  2. 导入MySQL监控仪表板:

    • 点击"+" → Import
    • 输入仪表板ID7362(MySQL Overview)
    • 选择刚创建的数据源

关键监控指标解析

  • 查询性能mysql_global_status_queries
  • 连接数mysql_global_status_threads_connected
  • 缓冲池利用率mysql_global_status_buffer_pool_pages_utilization
  • 复制延迟mysql_slave_status_seconds_behind_master

5. 常见问题排查

问题1:mysqld_exporter无法连接MySQL

解决方案

  • 检查.my.cnf文件权限(建议设置为600)
  • 验证监控账户权限
  • 确认MySQL是否绑定了正确网络接口
# 测试连接 mysql -uexporter -pStrongPassword123 -h127.0.0.1 -e "SHOW STATUS"

问题2:Prometheus无法抓取指标

排查步骤

  1. 检查exporter是否正常运行:
    curl http://localhost:9104/metrics
  2. 验证防火墙规则:
    sudo firewall-cmd --list-ports | grep 9104

问题3:Grafana面板显示"No Data"

解决方法

  • 确认数据源配置正确
  • 检查时间范围选择(建议先设置为"Last 15 minutes")
  • 验证PromQL查询语句是否匹配实际指标名称

对于需要长期监控的生产环境,建议将各个组件配置为系统服务,并设置开机自启。以下是一个Prometheus的systemd服务示例:

[Unit] Description=Prometheus Monitoring System After=network.target [Service] User=prometheus Group=prometheus ExecStart=/usr/local/prometheus/prometheus \ --config.file=/usr/local/prometheus/prometheus.yml \ --storage.tsdb.path=/var/lib/prometheus/data \ --web.listen-address=:9090 Restart=always [Install] WantedBy=multi-user.target

实际部署中发现,合理调整采集频率能显著降低系统负载。对于核心业务数据库,建议设置scrape_interval: 10s,而对于非关键业务可以设为30s甚至更长。监控数据的保留时间可通过--storage.tsdb.retention.time参数控制,默认15天对于大多数场景已经足够。

http://www.jsqmd.com/news/525916/

相关文章:

  • 手把手教你用Python仿真电容充放电曲线(附完整代码)
  • OpenClaw定时任务秘籍:GLM-4.7-Flash每日凌晨自动备份数据
  • SE(3)-Transformers实战:如何用等变注意力网络处理3D点云数据(附PyTorch代码)
  • Tao-8k模型GitOps实践:使用Git进行版本管理与自动化部署
  • 谷歌账号安全提示终极指南:为什么关闭插件就能登录?底层机制解析
  • Realistic Vision V5.1 集成至QT桌面应用:开发跨平台AI摄影工具
  • 2026XR教育展览服务优质推荐榜:vr虚拟现实开发公司报价、vr虚拟现实开发费用多少、专业vr虚拟现实开发公司推荐选择指南 - 优质品牌商家
  • ARM-03-点亮led
  • 分布式张量内存爆炸问题紧急响应指南:实时监控+梯度切片+异步Offload三重熔断机制(附可运行eBPF观测脚本)
  • REX-UniNLU快速上手:手把手教你做中文命名实体识别
  • AI净界RMBG-1.4应用案例:如何集成到内部CMS自动抠图
  • 别再只会点灯了!用STM32CubeMX配置外部中断控制电机启停(附完整代码)
  • 深入eMMC安全机制:图解RPMB防篡改存储的工作原理与消息协议解析
  • ABB RobotStudio导轨仿真实战:手把手教你配置自定义第七轴,让机器人精准走位
  • Openclaw龙虾一键安装
  • Qwen-Image-Edit保姆级教程:Docker Compose一键启动Qwen修图服务
  • 如何为你的应用选择靠谱的IP归属地数据源?一份给开发者的选型指南
  • IDEA卡顿?可能是缓存目录惹的祸!手把手教你优化IntelliJ IDEA性能(Windows专属)
  • VINS_MONO算法GPU加速:从理论到CUDA并行化实践
  • 电商商品库存设计指南:使用Go语言防止超买超卖实战
  • 逆变器的孤岛与并网运行模式:预同步波形输出探秘
  • 避坑指南:PCIe设备兼容性那些坑——聊聊MPS/MRRS设置不当引发的血泪史
  • AI 技术日报 | 2026-03-23
  • 用MATLAB复现Autoware中的路径规划算法:基于障碍物几何边界的方法
  • 摄像头OTA升级时,怎样用嵌入式IP离线库判断当地CDN节点而不拉跨省流量?
  • 保姆级教学:3步搞定Qwen3-VL-30B本地部署,轻松看懂图片内容
  • 避坑指南:DataGridView中使用日历控件时你可能遇到的5个问题及解决方法(C#版)
  • 洛谷B3870[GESP202309四级]变长编码实战:从原理到十六进制输出
  • Qwen2.5-VL多模态模型入门:从零开始,轻松部署你的AI识图工具
  • TradingAgents-CN智能交易系统:AI分析驱动的量化投资解决方案