Prometheus+Grafana监控mysql
1、简述
使用 Prometheus 结合 Grafana 监控 MySQL 是一套成熟且广泛应用的方案,能实现对 MySQL 性能、状态等指标的实时采集、存储、可视化及告警。
2、整体架构说明
- Prometheus:负责定时从 MySQL 采集监控指标(需借助 Exporter),并存储在时序数据库中。
- MySQL Exporter:部署在 MySQL 服务器或可访问 MySQL 的节点上,用于暴露 MySQL 的监控指标(如连接数、查询量、缓存命中率等),供 Prometheus 抓取。
- Grafana:通过连接 Prometheus 数据源,使用预置或自定义的仪表盘(Dashboard)可视化 MySQL 的监控指标,支持图表联动、告警配置等功能。
3、部署组件
3.1 部署 MySQL Exporter
下载安装包
前往Prometheus 官方下载页获取对应版本(以mysqld_exporter-0.14.0.linux-amd64.tar.gz
为例):
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.17.2/mysqld_exporter-0.17.2.linux-amd64.tar.gz
tar -zxvf mysqld_exporter-0.17.2.linux-amd64.tar.gz
mv mysqld_exporter-0.17.2.linux-amd64 /usr/local/mysqld_exporter
配置 Exporter 连接 MySQL
在 Exporter 目录下创建配置文件my.cnf
,写入 MySQL 用户信息:
[client]
user=username # 上文创建的监控用户
password=password # 对应密码
host=localhost # MySQL地址(若远程则填IP)
port=3306 # MySQL端口
启动 Exporter
以系统服务方式启动(推荐),创建/etc/systemd/system/mysqld-exporter.service
:
[Unit]
Description=MySQL Exporter
After=network.target[Service]
User=root
Group=root
WorkingDirectory=/usr/local/mysqld_exporter
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/my.cnf
Restart=always[Install]
WantedBy=multi-user.target
启动并设置开机自启:
systemctl daemon-reload
systemctl start mysqld-exporter
systemctl enable mysqld-exporter
验证:访问http://服务器IP:9104/metrics
,若能看到 MySQL 相关指标(如mysql_up
、mysql_connections
),说明 Exporter 正常运行。
3.2 Prometheus+Grafana
安装
参考文章:docker compose安装Prometheus、Grafana_grafana docker-compose-CSDN博客
配置 Prometheus 抓取 Exporter 指标
编辑 Prometheus 配置文件/usr/local/prometheus/prometheus.yml
,在scrape_configs
中添加 MySQL Exporter 的配置:
scrape_configs:- job_name: 'mysql' # 自定义任务名static_configs:- targets: ['localhost:9104'] # Exporter的地址(IP:端口)
重启Prometheus。
4、配置 Grafana 可视化 MySQL 指标
添加 Prometheus 数据源
- 登录 Grafana 后,点击左侧 “Configuration -> Data Sources”,点击 “Add data source”,选择 “Prometheus”。
- 在 “URL” 中输入 Prometheus 的地址(如
http://localhost:9090
),其他默认,点击 “Save & test”,显示 “Data source is working” 即配置成功。
导入 MySQL 监控仪表盘
Grafana 社区提供了大量预置的 MySQL 仪表盘,可直接导入:
- 点击左侧 “Dashboards -> Import”,输入仪表盘 ID(推荐
7362
或11323
,可在Grafana Dashboards搜索 “MySQL” 获取)。 - 选择已添加的 Prometheus 数据源,点击 “Import”,即可看到 MySQL 的监控面板(包含连接数、QPS、慢查询、缓存状态等指标)。
5、关键监控指标说明
- 可用性指标:
mysql_up
(1 表示正常,0 表示异常)、mysql_seconds_behind_master
(从库延迟,主从架构需关注)。 - 连接指标:
mysql_connections
(当前连接数)、mysql_max_connections
(最大连接数)、mysql_threads_connected
(已使用连接数)。 - 查询指标:
mysql_queries
(总查询数)、mysql_questions
(客户端发起的查询数)、mysql_slow_queries
(慢查询数)。 - 缓存指标:
mysql_key_cache_hit_rate
(键缓存命中率)、mysql_query_cache_hit_rate
(查询缓存命中率,MySQL 8.0 后移除)。 - I/O 指标:
mysql_bytes_received
(接收字节数)、mysql_bytes_sent
(发送字节数)、mysql_table_locks_waited
(表锁等待次数)。
6、总结
通过 Prometheus+Grafana+MySQL Exporter 的组合,可实现对 MySQL 的全方位监控,帮助运维和开发人员及时发现性能瓶颈、异常状态等问题。实际使用中可根据需求调整监控指标和仪表盘,优化告警策略,确保 MySQL 服务稳定运行。