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_upmysql_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(推荐736211323,可在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 服务稳定运行。