极速搭建MySQL监控系统PrometheusGrafana实战指南对于数据库管理员和开发者来说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.0MySQL指标采集器安装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 exporterlocalhost IDENTIFIED BY StrongPassword123 WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO exporterlocalhost; FLUSH PRIVILEGES;接着配置exporter的连接信息cat EOF /usr/local/mysqld_exporter/.my.cnf [client] userexporter passwordStrongPassword123 host127.0.0.1 port3306 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/-/reload4. 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后按以下步骤操作添加Prometheus数据源名称MySQL-MonitorURLhttp://prometheus-server-ip:9090其他保持默认导入MySQL监控仪表板点击 → Import输入仪表板ID7362MySQL Overview选择刚创建的数据源关键监控指标解析查询性能mysql_global_status_queries连接数mysql_global_status_threads_connected缓冲池利用率mysql_global_status_buffer_pool_pages_utilization复制延迟mysql_slave_status_seconds_behind_master5. 常见问题排查问题1mysqld_exporter无法连接MySQL解决方案检查.my.cnf文件权限建议设置为600验证监控账户权限确认MySQL是否绑定了正确网络接口# 测试连接 mysql -uexporter -pStrongPassword123 -h127.0.0.1 -e SHOW STATUS问题2Prometheus无法抓取指标排查步骤检查exporter是否正常运行curl http://localhost:9104/metrics验证防火墙规则sudo firewall-cmd --list-ports | grep 9104问题3Grafana面板显示No Data解决方法确认数据源配置正确检查时间范围选择建议先设置为Last 15 minutes验证PromQL查询语句是否匹配实际指标名称对于需要长期监控的生产环境建议将各个组件配置为系统服务并设置开机自启。以下是一个Prometheus的systemd服务示例[Unit] DescriptionPrometheus Monitoring System Afternetwork.target [Service] Userprometheus Groupprometheus ExecStart/usr/local/prometheus/prometheus \ --config.file/usr/local/prometheus/prometheus.yml \ --storage.tsdb.path/var/lib/prometheus/data \ --web.listen-address:9090 Restartalways [Install] WantedBymulti-user.target实际部署中发现合理调整采集频率能显著降低系统负载。对于核心业务数据库建议设置scrape_interval: 10s而对于非关键业务可以设为30s甚至更长。监控数据的保留时间可通过--storage.tsdb.retention.time参数控制默认15天对于大多数场景已经足够。
5分钟搞定!用Prometheus+Grafana监控MySQL性能(附详细配置截图)
极速搭建MySQL监控系统PrometheusGrafana实战指南对于数据库管理员和开发者来说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.0MySQL指标采集器安装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 exporterlocalhost IDENTIFIED BY StrongPassword123 WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO exporterlocalhost; FLUSH PRIVILEGES;接着配置exporter的连接信息cat EOF /usr/local/mysqld_exporter/.my.cnf [client] userexporter passwordStrongPassword123 host127.0.0.1 port3306 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/-/reload4. 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后按以下步骤操作添加Prometheus数据源名称MySQL-MonitorURLhttp://prometheus-server-ip:9090其他保持默认导入MySQL监控仪表板点击 → Import输入仪表板ID7362MySQL Overview选择刚创建的数据源关键监控指标解析查询性能mysql_global_status_queries连接数mysql_global_status_threads_connected缓冲池利用率mysql_global_status_buffer_pool_pages_utilization复制延迟mysql_slave_status_seconds_behind_master5. 常见问题排查问题1mysqld_exporter无法连接MySQL解决方案检查.my.cnf文件权限建议设置为600验证监控账户权限确认MySQL是否绑定了正确网络接口# 测试连接 mysql -uexporter -pStrongPassword123 -h127.0.0.1 -e SHOW STATUS问题2Prometheus无法抓取指标排查步骤检查exporter是否正常运行curl http://localhost:9104/metrics验证防火墙规则sudo firewall-cmd --list-ports | grep 9104问题3Grafana面板显示No Data解决方法确认数据源配置正确检查时间范围选择建议先设置为Last 15 minutes验证PromQL查询语句是否匹配实际指标名称对于需要长期监控的生产环境建议将各个组件配置为系统服务并设置开机自启。以下是一个Prometheus的systemd服务示例[Unit] DescriptionPrometheus Monitoring System Afternetwork.target [Service] Userprometheus Groupprometheus ExecStart/usr/local/prometheus/prometheus \ --config.file/usr/local/prometheus/prometheus.yml \ --storage.tsdb.path/var/lib/prometheus/data \ --web.listen-address:9090 Restartalways [Install] WantedBymulti-user.target实际部署中发现合理调整采集频率能显著降低系统负载。对于核心业务数据库建议设置scrape_interval: 10s而对于非关键业务可以设为30s甚至更长。监控数据的保留时间可通过--storage.tsdb.retention.time参数控制默认15天对于大多数场景已经足够。