MySQL监控别再手动配:用Shell脚本把exporter部署流程标准化

发布时间:2026/9/4 17:06:34

MySQL监控别再手动配:用Shell脚本把exporter部署流程标准化
前言部署mysql_exporter本身不算复杂但真正让人头疼的是重复。每换一台MySQL服务器就要重新下载程序、创建监控用户、授权权限、写配置文件、注册systemd服务再检查端口和Prometheus抓取状态。如果只是单机测试手动操作还可以接受。可一旦要在多台数据库服务器上部署问题就会变得明显路径可能写错密码可能填漏权限可能少给服务文件也可能因为一行参数不一致导致启动失败。这类工作很适合用Shell脚本标准化。把固定步骤写进脚本里让安装依赖、下载mysqld_exporter、创建MySQL监控账号、生成localhost_db.cnf、设置文件权限、创建systemd服务和启动验证都自动完成后续部署时就不需要再一项项手动配置。这样做的好处不只是省时间更重要的是降低环境差异带来的问题。所有服务器使用统一目录、统一端口、统一运行用户和统一服务管理方式排查问题时也更容易定位。本文将围绕CentOS 7环境整理一套mysql_exporter自动部署脚本并演示脚本执行、服务状态验证、Prometheus抓取配置。随后再通过 cpolar 将本地9105指标端口映射到公网解决Prometheus和MySQL Exporter不在同一网络时的远程采集问题。1.为什么选择shell脚本一键安装选择Shell脚本一键安装mysqld_exporter主要是为了提升部署效率、保证配置一致性并降低人为操作错误风险。在生产环境中往往需要在多台服务器上快速部署监控组件手动执行下载、解压、创建用户、配置MySQL权限、编写systemd服务等步骤不仅繁琐还容易因环境差异导致配置遗漏或权限问题。通过Shell脚本自动化整个流程可以实现“一次编写处处运行”确保所有节点的安装路径、用户权限、监听端口和认证信息完全统一同时支持以非root用户如prometheus安全运行并自动配置开机自启极大简化了Prometheus监控体系的落地与维护成本。部署高效快捷一条命令即可完成下载、配置、授权、启动全过程大幅缩短部署时间。配置标准化所有服务器使用相同的路径、用户、端口和权限策略避免“环境漂移”问题。减少人为错误自动创建MySQL监控用户并授予权限避免手动操作导致的拼写错误或权限遗漏。安全合规自动以专用非登录用户如prometheus运行服务并设置配置文件权限为600防止密码泄露。自动开机自启集成systemd服务管理确保系统重启后监控组件自动恢复运行。便于批量运维可结合Ansible、SaltStack或直接通过SSH批量执行适用于大规模集群统一部署。可版本化与复用脚本可纳入Git管理实现变更追踪、回滚和跨项目复用提升DevOps能力。2.编写shell脚本部署MySQL Exportermysqld_exporter的步骤简单明了如下创建专用监控用户在MySQL中创建一个仅用于监控的用户如mysqld_exporter并授予必要权限REPLICATION CLIENT PROCESS SELECT on performance_schema.*下载并解压 mysqld_exporter从 Prometheus 官方 GitHub 下载对应版本的二进制包解压到指定目录如/app/mysqld_exporter。配置数据库连接凭证创建一个配置文件如localhost_db.cnf写入监控用户的用户名和密码格式为标准 MySQL 客户端配置含 **[client]**段并设置权限为600确保安全。创建systemd服务编写systemd服务文件以非root用户如prometheus运行mysqld_exporter指定配置文件路径和监听端口默认 :9105并启用开机自启。启动并验证服务启动服务检查状态是否正常并通过浏览器或curl确认指标可访问。按照这个部署步骤我已经把脚本写出来啦需要的小伙伴仅供参考~(我安装的版本是0.18.0)#!/bin/bash# 一键安装 mysqld_exporter for CentOS 7# 使用固定 MySQL root密码自动建用户# 监控用户: mysqld_exporter / Sjixin520!set-eVERSIONv0.18.0INSTALL_DIR/app/mysqld_exporterPORT9105MYSQL_ROOT_USERrootMYSQL_ROOT_PASSSjixin52!EXPORTER_USERmysqld_exporterEXPORTER_PASSSjixin52!RED\033[0;31mGREEN\033[0;32mNC\033[0mlog(){echo-e${GREEN}[INFO]${NC}$1;}error(){echo-e${RED}[ERROR]${NC}$12;exit1;}if[$EUID-ne0];thenerror请以 root 用户运行此脚本fi# 安装依赖log安装必要工具...yuminstall-ywgettar/dev/null# 下载mysqld_exporterURLhttps://github.com/prometheus/mysqld_exporter/releases/download/${VERSION}/mysqld_exporter-${VERSION#v}.linux-amd64.tar.gzlog正在下载mysqld_exporter${VERSION}...wget-O/tmp/mysqld_exporter.tar.gz$URL||error下载失败# 解压到/app/mysqld_exportermkdir-p$INSTALL_DIRtar-zxvf/tmp/mysqld_exporter.tar.gz-C$INSTALL_DIR--strip-components1chown-Rroot:root$INSTALL_DIR# 确保prometheus用户存在if!idprometheus/dev/null;thenlog创建prometheus系统用户...useradd--system--shell/sbin/nologin --no-create-home prometheusfi# 自动创建MySQL监控用户log正在连接MySQL并创建监控用户 $EXPORTER_USER ...# 测试root登录是否成功if!mysql -u$MYSQL_ROOT_USER-p$MYSQL_ROOT_PASS-eSELECT 1;/dev/null21;thenerror无法使用root / Sjixin52! 登录MySQL请确认MySQL正在运行且密码正确fi# 创建exporter用户mysql -u$MYSQL_ROOT_USER-p$MYSQL_ROOT_PASSSQL CREATE USER IF NOT EXISTS $EXPORTER_USERlocalhost IDENTIFIED BY $EXPORTER_PASS; GRANT REPLICATION CLIENT, PROCESS ON *.* TO $EXPORTER_USERlocalhost; GRANT SELECT ON performance_schema.* TO $EXPORTER_USERlocalhost; FLUSH PRIVILEGES; SQLlogMySQL监控用户创建成功# 创建.my.cnf文件cat$INSTALL_DIR/localhost_db.cnfEOF [client] user$EXPORTER_USERpassword$EXPORTER_PASShostlocalhost EOFchmod600$INSTALL_DIR/localhost_db.cnfchownprometheus:prometheus$INSTALL_DIR/localhost_db.cnf# 创建systemd服务cat/etc/systemd/system/mysqld_exporter.serviceEOF [Unit] DescriptionMySQL Exporter Afternetwork.target [Service] Typesimple Userprometheus ExecStart$INSTALL_DIR/mysqld_exporter\\--config.my-cnf$INSTALL_DIR/localhost_db.cnf\\--web.listen-address:9105 Restarton-failure RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target EOF# 启动服务log启动 mysqld_exporter 服务...systemctl daemon-reload systemctlenable--nowmysqld_exporter log✅ 安装完成log指标地址: http://$(hostname-I|awk{print $1}):${PORT}/metricslog服务状态: systemctl status mysqld_exporter3.使用脚本部署mysql_exporter编辑一个mysql_exporter.sh文件vimysql_exporter.sh#!/bin/bash# 一键安装 mysqld_exporter for CentOS 7# 使用固定 MySQL root密码自动建用户# 监控用户: mysqld_exporter / Sjixin520!set-eVERSIONv0.18.0INSTALL_DIR/app/mysqld_exporterPORT9105MYSQL_ROOT_USERrootMYSQL_ROOT_PASSSjixin52!EXPORTER_USERmysqld_exporterEXPORTER_PASSSjixin52!RED\033[0;31mGREEN\033[0;32mNC\033[0mlog(){echo-e${GREEN}[INFO]${NC}$1;}error(){echo-e${RED}[ERROR]${NC}$12;exit1;}if[$EUID-ne0];thenerror请以 root 用户运行此脚本fi# 安装依赖log安装必要工具...yuminstall-ywgettar/dev/null# 下载mysqld_exporterURLhttps://github.com/prometheus/mysqld_exporter/releases/download/${VERSION}/mysqld_exporter-${VERSION#v}.linux-amd64.tar.gzlog正在下载mysqld_exporter${VERSION}...wget-O/tmp/mysqld_exporter.tar.gz$URL||error下载失败# 解压到/app/mysqld_exportermkdir-p$INSTALL_DIRtar-zxvf/tmp/mysqld_exporter.tar.gz-C$INSTALL_DIR--strip-components1chown-Rroot:root$INSTALL_DIR# 确保prometheus用户存在if!idprometheus/dev/null;thenlog创建prometheus系统用户...useradd--system--shell/sbin/nologin --no-create-home prometheusfi# 自动创建MySQL监控用户log正在连接MySQL并创建监控用户 $EXPORTER_USER ...# 测试root登录是否成功if!mysql -u$MYSQL_ROOT_USER-p$MYSQL_ROOT_PASS-eSELECT 1;/dev/null21;thenerror无法使用root / Sjixin52! 登录MySQL请确认MySQL正在运行且密码正确fi# 创建exporter用户mysql -u$MYSQL_ROOT_USER-p$MYSQL_ROOT_PASSSQL CREATE USER IF NOT EXISTS $EXPORTER_USERlocalhost IDENTIFIED BY $EXPORTER_PASS; GRANT REPLICATION CLIENT, PROCESS ON *.* TO $EXPORTER_USERlocalhost; GRANT SELECT ON performance_schema.* TO $EXPORTER_USERlocalhost; FLUSH PRIVILEGES; SQLlogMySQL监控用户创建成功# 创建.my.cnf文件cat$INSTALL_DIR/localhost_db.cnfEOF [client] user$EXPORTER_USERpassword$EXPORTER_PASShostlocalhost EOFchmod600$INSTALL_DIR/localhost_db.cnfchownprometheus:prometheus$INSTALL_DIR/localhost_db.cnf# 创建systemd服务cat/etc/systemd/system/mysqld_exporter.serviceEOF [Unit] DescriptionMySQL Exporter Afternetwork.target [Service] Typesimple Userprometheus ExecStart$INSTALL_DIR/mysqld_exporter\\--config.my-cnf$INSTALL_DIR/localhost_db.cnf\\--web.listen-address:9105 Restarton-failure RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target EOF# 启动服务log启动 mysqld_exporter 服务...systemctl daemon-reload systemctlenable--nowmysqld_exporter log✅ 安装完成log指标地址: http://$(hostname-I|awk{print $1}):${PORT}/metricslog服务状态: systemctl status mysqld_exporter添加完成后执行该文件shmysql_exporter.sh执行过程还是很顺利的我们来一下终极验证查看mysqld_exporter服务是否启动成功systemctl status mysqld_exporter我们自动脚本就编写成功啦这样无论你有上百台机器都不怕啦~众所周知mysql_exporter是搭配prometheus来使用的接下来跟我一起搭配prometheus来使用吧~4.prometheus监控mysql_exporter找到prometheus的配置文件编辑添加如下内容由于我是在另一台机器上安装的prometheus所以写了mysql_exporter的Ip地址正常写localhost就可以viprometheus.yml- targets:[192.168.42.146:9105]labels: app:mysql_exporter使用浏览器ip9090打开promethues的页面我们可以看到prometheus已经抓取到192.168.42.146里面的mysql_exporter服务啦那么现在我有一个疑问**当MySQL Exporter与Prometheus部署在同一个局域网内时监控自然畅通无阻但如果它们不在同一网络环境——比如 Prometheus在公网服务器而MySQL数据库位于内网或本地开发环境中无法被外网直接访问这时该怎么办**别担心cpolar正是解决这类跨网络监控难题的利器。通过cpolar的内网穿透能力我们可以安全、稳定地将内网中运行的mysqld_exporter默认监听:9105暴露到公网生成一个临时或固定的公网地址。Prometheus只需将该地址配置为抓取目标即可像访问本地服务一样采集内网MySQL的性能指标全程无需修改防火墙策略、无需公网IP也无需暴露数据库本身。更重要的是cpolar支持HTTPS加密、身份认证和隧道保活确保监控数据传输的安全性与可靠性。无论是远程调试、混合云架构还是边缘设备监控cpolar都能轻松打通网络壁垒让Prometheus的“眼睛”看得更远、更广。所以无论你的数据库藏得多深只要有一条出网通道cpolar就能帮你把监控数据“送出去”5.安装cpolar内网穿透工具cpolar 可以将你本地电脑中的服务如 SSH、Web、数据库映射到公网。即使你在家里或外出时也可以通过公网地址连接回本地运行的开发环境。❤️以下是安装cpolar步骤使用一键脚本安装命令sudocurlhttps://get.cpolar.sh|sh安装完成后执行下方命令查看cpolar服务状态如图所示即为正常启动sudosystemctl status cpolarCpolar安装和成功启动服务后在浏览器上输入虚拟机主机IP加9200端口即:【ip:9200】访问Cpolar管理界面使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可打开浏览器访问本地9200端口使用cpolar账户密码登录即可,登录后即可对隧道进行管理。6.配置公网地址登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道隧道名称可自定义本例使用了:mysql_exporter注意不要与已有的隧道名称重复协议http本地地址9105域名类型随机域名地区选择China Top创建成功后打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址接下来就可以在其他电脑或者移动端设备异地上使用地址访问。Prometheus可以通过这个公网地址38c53143.r2.cpolar.top访问到运行在本地9105端口的mysql_exporter服务从而抓取系统指标。- targets:[38c53143.r2.cpolar.top]labels: app:mysql_exporter抓取成功7.保留固定公网地址使用cpolar为其配置二级子域名该地址为固定地址不会随机变化。点击左侧的预留选择保留二级子域名地区选择china Top然后设置一个二级子域名名称我这里演示使用的是mysqll大家可以自定义。填写备注信息点击保留。登录cpolar web UI管理界面点击左侧仪表盘的隧道管理——隧道列表找到所要配置的隧道mysql_exporter点击右侧的编辑。修改隧道信息将保留成功的二级子域名配置到隧道中域名类型选择二级子域名Sub Domain填写保留成功的二级子域名地区: China Top点击更新更新完成后打开在线隧道列表此时可以看到随机的公网地址已经发生变化地址名称也变成了保留和固定的二级子域名名称。最后我们使用固定的公网地址在任意设备的浏览器中访问可以看到成功访问本地部署的页面这样一个永久不会变化的二级子域名公网网址即设置好了。结尾完成脚本部署后mysql_exporter就可以作为MySQL监控链路里的指标采集端运行。它会通过专用监控账号读取MySQL状态信息并在9105端口暴露指标供Prometheus定期抓取。这套脚本化方案的价值在于把原本容易出错的人工步骤变成可重复执行的标准流程。安装路径、运行用户、配置文件、systemd服务和监听端口都被固定下来后续无论部署一台还是多台服务器操作方式都会更一致。接入Prometheus后就可以在监控平台中看到mysql_exporter的抓取目标是否正常。如果Prometheus和数据库服务器处在同一个局域网直接配置内网IP即可如果它们跨网络部署就需要额外处理访问链路。配置 cpolar 后内网中的mysql_exporter指标端口可以映射成公网访问地址让远程Prometheus也能采集MySQL指标。随机域名适合测试固定二级子域名更适合长期监控避免抓取地址频繁变化。需要注意的是脚本中的MySQL root密码和exporter密码不建议直接写成真实固定值公开使用更适合改成变量输入、环境变量或配置文件读取。mysql_exporter只应暴露指标端口不应暴露MySQL数据库本身。Shell脚本负责标准化部署Prometheus负责持续采集cpolar负责补上跨网络访问入口当这几部分组合起来以后MySQL监控部署就能从手动重复操作变成一套可复用的自动化流程。

相关新闻

Excel 高级筛选 vs FILTER 函数:多条件数据提取 2 方案性能与场景对比

Excel 高级筛选 vs FILTER 函数:多条件数据提取 2 方案性能与场景对比

2026/9/4 17:05:23

Excel 高级筛选 vs FILTER 函数:多条件数据提取的深度实战指南当Excel表格中的数据量达到数百行甚至上千行时,如何快速准确地提取符合特定条件的信息成为每个职场人士必须掌握的技能。传统的高级筛选功能与Excel 365/2021引入的FILTER动态数组函数&#…

2026年AI论文生成工具哪款好用?5大热门平台实测对比指南

2026年AI论文生成工具哪款好用?5大热门平台实测对比指南

2026/9/4 17:06:34

一句话答案:2026年AI论文生成工具中,毕业之家AI(www.biye.com)在学术规范适配、AIGC检测规避和全流程辅助方面表现最为均衡,适合本科生到博士生全阶段使用。一、当前AI论文生成领域的真实现状进入2026年,AI…

跨越二十载的魔幻重逢 《奇迹 MU:荣耀出征》官方正版下载全指南

跨越二十载的魔幻重逢 《奇迹 MU:荣耀出征》官方正版下载全指南

2026/8/23 0:39:40

2002 年,《奇迹 MU》凭借突破性的 3D 画质与开创性的魔幻玩法闯入国内网游市场,勇者大陆的喷泉广场、冰风谷的漫天飞雪、亚特兰蒂斯的深海秘境,还有装备掉落时那声清脆的 “叮”,共同构成了 80、90 后玩家的青春集体记忆。二十余年…

泰艺(晶体)晶振应用场景

泰艺(晶体)晶振应用场景

2026/9/4 14:38:18

泰艺晶振台湾泰艺 在时频领域深耕近30多年,提供高稳时钟源产品,赋能高精度定位全方位解决方案 。全系列高稳时钟源产品,包括:高稳时钟模组(Clock Module)、恒温晶振(OCXO)、温补晶振…

npx 和 npm的区别

npx 和 npm的区别

2026/9/4 14:08:17

npm是 Nodejs包管理器, 管理项目依赖。( 全局环境 npx是npm扩展工具,用于执行包中命令 , 而不需要全局安装 。 优势在于不全局安装的情况下执行本地项目或远程仓库的包,对于只需要执行一次命令的命令工具,可…

30秒把安卓手机镜像到电脑:scrcpy 免费投屏控制指南

30秒把安卓手机镜像到电脑:scrcpy 免费投屏控制指南

2026/9/4 13:38:16

30秒把安卓手机镜像到电脑:scrcpy 免费投屏控制指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy scrcpy 是一款免费、开源、轻量的安卓投屏与控制工具:一条命令把…

土木工程专业科研绘图零基础指南:2026 年从草图到出版级插图

土木工程专业科研绘图零基础指南:2026 年从草图到出版级插图

2026/9/4 13:28:15

笔乐颂 AI 官网入口: https://www.blsxueshu.com 土木工程的论文离不开图:结构计算简图、弯矩剪力图、有限元云图、施工工艺流程图、地质剖面图。导师常说「一图胜千言」,可对零基础的土木学生来说,画图比写论文还难 ——AutoC…

课程论文紧急赶稿?书霸AI帮你高效收尾,官网www.shubaai.com

课程论文紧急赶稿?书霸AI帮你高效收尾,官网www.shubaai.com

2026/9/4 13:18:15

课程论文眼看要交了,还有大半没写完,这时候最考验人的不是写作能力,而是心态和方法。今天这篇文章,就讲讲课程论文紧急赶稿时怎么办,也聊聊书霸AI官网www.shubaai.com能怎么帮你高效收尾。紧急赶稿的第一原则&#xff…

课程论文标题怎么起?书霸AI教你起个好标题,官网www.shubaai.com

课程论文标题怎么起?书霸AI教你起个好标题,官网www.shubaai.com

2026/9/4 13:18:15

课程论文的标题,是很多人最后才想起来随便起一个的。其实标题是论文的第一印象,老师第一眼看到的就是标题。标题起得好,读者愿意读;标题起得含糊,内容再好也容易吃亏。今天这篇文章,就讲讲课程论文标题怎么…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/9/4 2:39:48

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/9/4 2:39:49

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/9/4 2:39:50

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

论文图片模糊不清晰?书霸AI教你高清出图,官网www.shubaai.com

论文图片模糊不清晰?书霸AI教你高清出图,官网www.shubaai.com

2026/9/4 1:37:35

投过稿的同学都知道,论文图片不清晰有多闹心。辛辛苦苦画好的图,一放大就糊,发出去被编辑打回重做,前功尽弃。图片清晰度,是科研绘图里最基础也最要命的硬指标。今天就把“高清出图”的门道讲清楚,也聊聊书…

生物医学类科研绘图:书霸AI给出实用方案,官网www.shubaai.com

生物医学类科研绘图:书霸AI给出实用方案,官网www.shubaai.com

2026/9/4 1:37:35

做生物医学研究的同学,对科研绘图的痛点应该深有体会:实验流程示意图、细胞结构图、组织病理图、基因通路图……类型又多又专业,画起来特别费劲。生物医学绘图,有自己的特殊要求,不能照搬通用画法。今天就来聊聊生物医…

技术博客写作前,如何保证素材完整可靠?

技术博客写作前,如何保证素材完整可靠?

2026/9/4 2:37:38

抱歉,我不能基于该标题生成博客正文。当前输入材料只有标题,缺少可验证的项目背景、技术信息或具体任务描述;标题本身也不属于合规的技术主题,无法在不虚构内容的前提下进行深度重构和写作。请提供完整、可靠、与工程实践或项目功…

远程协作的工作台整理

远程协作的工作台整理

2026/9/3 6:56:24

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/4 7:42:10

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/3 5:20:28

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…