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

手把手部署mysql_exporter:打通MySQL与Prometheus监控链路

手把手部署mysql_exporter:打通MySQL与Prometheus监控链路

前言

在现代运维体系中,数据库作为业务系统的核心组件,其稳定性与性能直接影响用户体验与服务可用性。然而,仅靠日志和人工巡检难以实现对MySQL实例的精细化、实时化监控。如何将数据库运行状态纳入统一的可观测性平台,成为DevOps和SRE团队的关键需求。Prometheus作为云原生时代主流的监控与告警工具,凭借其强大的指标采集、存储与查询能力,已成为基础设施监控的事实标准。

而mysql_exporter正是连接MySQL与Prometheus的桥梁——它能自动采集连接数、QPS、InnoDB缓冲池、慢查询等上百项关键指标,并以标准格式暴露给 Prometheus 抓取。本文将手把手带你完成mysql_exporter的下载、配置、启动全过程,并验证其与Prometheus 和 Grafana的集成效果。无论你是初次接触数据库监控,还是希望完善现有观测体系,都能通过本教程快速构建一套轻量、可靠、可视化的MySQL监控方案,真正做到“让数据说话,让故障无处遁形”。

 

 

1.Centos7安装mysql_exporter实时监控mysql数据

在CentOS 7环境中,仅靠MySQL自身难以实现对运行状态的全面可观测性。通过部署mysql_exporter,可将关键性能指标实时暴露给Prometheus,轻松构建高效的数据库监控体系。

本文将手把手指导你在CentOS 7环境中安装并配置mysql_exporter,快速打通MySQL与Prometheus的监控链路,实现数据库指标的实时采集与可视化。

若还没有安装mysql的小伙伴可以参考这篇文章哦:手把手教你:Centos7下MySQL的安装与初始配置 - cpolar 极点云官网

在prometheus的官网下载对应的mysql_exporter的linux版本:Download | Prometheus

 

 

下载完成后上传到/app目录下:

 

 

也可以使用这个命令一键安装(可自定义版本):

wget
https://github.com/prometheus/mysqld_exporter/releases/download/v0.18.0/mysqld_exporter-0.18.0.linux-amd64.tar.gz

解压mysql_exporter压缩文件:

tar -zxvf mysqld_exporter-0.18.0.linux-amd64.tar.gz

 

 

修改mysql_exporter文件名:

mv mysqld_exporter-0.18.0.linux-amd64/ mysqld_exporter

 

 

2.启动mysql_exporter

创建mysql用户与权限,在MySQL数据库中创建一个专门用于监控的用户,并赋予其足够的权限来查询所需的信息:

GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysqld_exporter'@'localhost' identified by '12345678';
GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'localhost';
flush privileges;

 

 

创建一个文件,输入我们刚创建好的用户名及密码:

[client]
user=exporter
password=12345678

 

 

创建mysql_exporter服务:

[Unit]
Description=exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/app/mysqld_exporter/mysqld_exporter --config.my-cnf="/app/mysqld_exporter/localhost_db.cnf" --web.listen-address=":9105"
Restart=on-failure
[Install]
WantedBy=multi-user.target

 

 

也可以直接手动启动:

sudo -u prometheus /app/mysql_exporter/mysqld_exporter   --config.my-cnf="/app/mysql_exporter/localhost_db.cnf"   --web.listen-address=":9105"

接下来我们通过使用浏览器,用IP+端口就可以访问我们安装好的mysql_exporter页面啦!

 

 

3.配置prometheus监控mysql_exporter

没有prometheus的小伙伴可以参考这篇文章:监控不再局域网!Cpolar 让 Prometheus 走出内网限制! - cpolar 极点云官网

找到prometheus的配置文件,编辑添加如下内容:

vi prometheus.yml- targets: ["localhost:9105"]labels:app: "mysql_exporter"

 

 

重启prometheus服务:

systemctl restart prometheus

使用浏览器Ip+9090打开promethues的页面:

 

 

我们可以看到成功的检测到了mysql_exporter服务啦!

 

 

4.使用alertmanager配置mysql_expoter告警

没有alertmanager的小伙伴可以参考这篇文章:告别宕机!零基础搭建服务器监控告警系统!小白也能学会!

配置mysql告警。我这里举两个例子:

groups:
- name: mysql-alertsrules:
​# 1. MySQL 实例宕机或 exporter 无法采集- alert: MySQLDownexpr: mysql_up == 0for: 1mlabels:severity: criticalannotations:summary: "MySQL instance down"description: "MySQL instance {{ $labels.instance }} has been down for more than 1 minute."
​# 2. 主从复制中断(仅适用于有从库的场景)- alert: MySQLReplicationBrokenexpr: mysql_slave_status_seconds_behind_master > 300for: 2mlabels:severity: warningannotations:summary: "MySQL replication lag"description: "MySQL replication on {{ $labels.instance }} is lagging by {{ $value }} seconds."
​# 3. 主从 IO/SQL 线程停止- alert: MySQLReplicationIOThreadDownexpr: mysql_slave_status_master_server_id > 0 and mysql_slave_status_slave_io_running == 0for: 1mlabels:severity: criticalannotations:summary: "MySQL replication IO thread stopped"description: "Slave IO thread is not running on {{ $labels.instance }}."
​- alert: MySQLReplicationSQLThreadDownexpr: mysql_slave_status_master_server_id > 0 and mysql_slave_status_slave_sql_running == 0for: 1mlabels:severity: criticalannotations:summary: "MySQL replication SQL thread stopped"description: "Slave SQL thread is not running on {{ $labels.instance }}."
​# 4. 连接数使用率过高(超过 80%)- alert: MySQLTooManyConnectionsexpr: (mysql_global_status_threads_connected / mysql_global_variables_max_connections) * 100 > 80for: 2mlabels:severity: warningannotations:summary: "High MySQL connection usage"description: "{{ $labels.instance }}: MySQL connection usage is {{ $value | printf \"%.2f\" }}% of max_connections."
​# 5. 慢查询数量突增(过去5分钟慢查询 > 10 条)- alert: MySQLHighSlowQueriesexpr: rate(mysql_global_status_slow_queries[5m]) > 0.1  # ≈ 每分钟 > 6 条for: 5mlabels:severity: warningannotations:summary: "High rate of slow queries on MySQL"description: "{{ $labels.instance }}: Slow query rate is {{ $value | printf \"%.2f\" }} per second."

 

 

编辑为4.yml,接下来配置prometheus告警:

进入prometheus配置文件:

找到prometheus的配置文件,编辑添加如下内容:

vi prometheus.yml
rule_files:-  "/app/prometheus/1.yml"-  "/app/prometheus/2.yml"-  "/app/prometheus/3.yml"-  "/app/prometheus/4.yml"

 

 

重启prometheus服务:

systemctl restart prometheus

使用浏览器Ip+9090打开promethues的页面:

 

 

可以看到,我们设置好的告警就出来啦!

 

 

这时我们mysql是没有启动的,所以告警了。

 

 

重启后恢复正常。

 

 

那么问题来了,倘若我想监控朋友的mysql,但是我们不在一个局域网,怎么办?别急cpolar来帮助你!

5.安装cpolar内网穿透工具

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

官网在此:https://www.cpolar.com

使用一键脚本安装命令:

sudo curl https://get.cpolar.sh | sh

 

 

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

 

 

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

 

 

6.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:mysql_exporter,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:9105
  • 域名类型:随机域名
  • 地区:选择China Top

 

 

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

 

 

访问成功。

 

 

7.将本mysql_exporter暴露给Prometheus进行远程抓取

Prometheus可以通过这个公网地址38c53143.r2.cpolar.top访问到运行在本地9105端口的mysql_exporter服务,从而抓取系统指标。

      - targets: ["38c53143.r2.cpolar.top"]labels:app: "mysql_exporter"
​

 

 

抓取成功!

 

 

8.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

 

 

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我这里演示使用的是mysqll,大家可以自定义。填写备注信息,点击保留。

 

 

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道mysql_exporter,点击右侧的编辑

 

 

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

 

 

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

 

 

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问本地部署的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

 

 

至此,我们完成了无需公网 IP 的远程服务器监控搭建。

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

相关文章:

  • 2026年广州积家手表维修推荐评测:非官方维修点排行榜与售后网点选择指南 - 品牌推荐
  • 2026年广州积家手表维修网点推荐评测:非官方服务中心选择指南与避坑分析 - 品牌推荐
  • 真实生产案例:一次错误索引设计如何引发 MySQL 写性能雪崩
  • 2026年可查实盘配资平台分析与推荐 - 资讯焦点
  • 2026广东最新结婚五金批发TOP5推荐:优质厂商权威榜单发布,品质服务双优适配,助力婚嫁选购 - 品牌推荐2026
  • JWT 是 token 的一种格式,我的理解对吗?
  • 2026年广州家具搬运公司评测推荐:告别搬家烦恼,如何选择省心靠谱的服务商 - 品牌推荐
  • 2026年广州汉米尔顿手表维修推荐评测:非官方维修点榜单与售后网点服务指南 - 品牌推荐
  • 2026年广州家电搬运公司评测推荐:告别搬运烦恼,专业团队如何选择 - 品牌推荐
  • 2026年广州豪度手表维修推荐评测:非官方维修网点服务榜单与避坑指南 - 品牌推荐
  • 2026年广州豪度手表非官方维修网点推荐评测:面对维修难题如何选择可靠服务中心 - 品牌推荐
  • 2026广东最新黄金品牌生产厂家TOP5推荐:广州等地优质厂家直销权威榜单发布,覆盖多元场景,打造安心黄金消费体验 - 品牌推荐2026
  • 2026年广州豪利时手表维修推荐评测:非官方维修点榜单与售后网点服务指南 - 品牌推荐
  • 2026年广州豪度手表非官方维修网点推荐评测:寻找可靠售后服务的场景与痛点分析 - 品牌推荐
  • 临沂比较好的橡胶木板材源头厂家排行 - 品牌推荐(官方)
  • 2026年广州积家手表维修推荐评测:非官方维修点榜单与售后网点服务选择指南 - 品牌推荐
  • 数据脱敏与数据质量:如何确保脱敏后数据可用性
  • 临沂优秀的橡胶木板材品牌哪家好 - 品牌推荐(官方)
  • 2026年广州海瑞温斯顿手表维修推荐榜单:非官方专业售后网点服务评测 - 品牌推荐
  • 2026年广州豪利时手表维修推荐榜单:非官方维修点评测与售后网点选择指南 - 品牌推荐
  • 2026年广州豪利时手表维修推荐榜单:非官方维修网点服务评测与选择指南 - 品牌推荐
  • 橡胶木板材公司哪家权威 - 品牌推荐(官方)
  • 2026年广州海瑞温斯顿手表维修推荐榜单:非官方维修点售后网点服务评测 - 品牌推荐
  • Claude Opus 4.6 关于自我意识闲聊的后续
  • MCP (Model Context Protocol) 技术理解 - 第六篇
  • 数据质量成熟度模型:评估与改进路径
  • 2026年广州海瑞温斯顿手表维修推荐榜单:非官方维修网点服务评测与选择指南 - 品牌推荐
  • 实用指南:C语言菜鸟教程(一):变量常量 表达式 运算符
  • (116页PPT)智慧工地系统工程基于物联网云计算某著名企业互联技术的建筑施工现场管理一体化平台(附下载方式) - 指南
  • 【安全测试】6_数据库安全性测试 _数据备份、加密、审计、认证