目录
- 1. 创建 MySQL 监控用户
- 2. 配置 MySQL 认证文件
- 3. 安装 mysqld_exporter
- 4. 配置 Systemd 服务
- 5. 启动并验证服务
- 6. 修改Prometheus配置
- 常见错误排查
- 错误现象
- 排查步骤
- 6. 验证监控数据
- 关键注意事项
- 7. Grafana看板
1. 创建 MySQL 监控用户
mysql -uroot -p123456 # 登录MySQL
-- 1. 创建监控用户
CREATE USER 'mysql_monitor'@'%' IDENTIFIED BY 'GUANzhu123//';-- 2. 授予必要权限
GRANT SELECT, REPLICATION CLIENT, PROCESS ON *.* TO 'mysql_monitor'@'%';
FLUSH PRIVILEGES;
EXIT; # 退出MySQL
2. 配置 MySQL 认证文件
# 创建配置目录
mkdir -p /etc/mysqld_exporter# 创建并编辑认证文件
vim /etc/mysqld_exporter/.my.cnf
[client]
host=192.168.15.131 # MySQL服务器地址
user=mysql_monitor
password=GUANzhu123//
# 设置文件权限(仅root可读)
chmod 600 /etc/mysqld_exporter/.my.cnf
3. 安装 mysqld_exporter
# 创建安装目录
mkdir /usr/local/mysqld_exporter# 解压二进制文件
tar -xzf mysqld_exporter-0.15.0.linux-amd64.tar.gz -C /usr/local/mysqld_exporter --strip-components=1# 设置可执行权限
chmod +x /usr/local/mysqld_exporter/mysqld_exporter
4. 配置 Systemd 服务
# 创建服务文件
vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=MySQL Exporter for Prometheus
After=network.target
StartLimitIntervalSec=300 # 允许更多重启尝试
StartLimitBurst=10 # 间隔内允许的失败次数[Service]
User=root
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \--config.my-cnf=/etc/mysqld_exporter/.my.cnf \--web.listen-address=:9104 \--log.level=debug # 启用调试日志
Restart=always
RestartSec=10
TimeoutStartSec=120 # 延长启动超时
StandardOutput=journal # 日志输出到systemd
StandardError=journal
SyslogIdentifier=mysqld_exporter[Install]
WantedBy=multi-user.target
5. 启动并验证服务
# 重新加载Systemd配置
systemctl daemon-reload# 设置开机自启
systemctl enable mysqld_exporter# 启动服务
systemctl start mysqld_exporter# 检查服务状态
systemctl status mysqld_exporter
6. 修改Prometheus配置
vim /usr/local/prometheus/prometheus.yml
添加- job_name: 'postgres'static_configs: - targets: ['192.168.15.131:9187']
常见错误排查
错误现象
Active: activating (auto-restart) (Result: exit-code) ...
Process: 76499 ExecStart=... (code=exited, status=1/FAILURE)
排查步骤
-
检查日志
journalctl -u mysqld_exporter -f --no-pager
- 常见错误:
- 连接失败:
Access denied
或Can't connect to MySQL server
- 确认
.my.cnf
中的host
、user
、password
是否正确。
- 确认
- 文件权限:
Permission denied
- 确保
.my.cnf
权限为600
,且mysqld_exporter
用户有读取权限。
- 确保
- 路径错误:
No such file or directory
- 确认
ExecStart
中的可执行文件路径正确。
- 确认
- 连接失败:
- 常见错误:
-
手动测试连接
/usr/local/mysqld_exporter/mysqld_exporter \--config.my-cnf=/etc/mysqld_exporter/.my.cnf \--log.level=debug
- 观察终端输出,确认是否可以成功连接到 MySQL。
-
检查网络连通性
telnet 192.168.15.131 3306 # 确认MySQL端口可达
-
终止残留进程
如果服务卡在activating
状态,手动终止残留进程:ps aux | grep mysqld_exporter kill -9 <PID> # 强制终止
6. 验证监控数据
- 访问
http://<服务器IP>:9104/metrics
,确认可以获取到 MySQL 监控指标。
关键注意事项
-
安全性
- 监控用户密码建议使用强密码,并限制访问来源(如仅允许 Prometheus 服务器 IP)。
- 生产环境建议使用非
root
用户运行mysqld_exporter
。
-
防火墙配置
firewall-cmd --add-port=9104/tcp --permanent firewall-cmd --reload
-
版本兼容性
mysqld_exporter 0.15.0
支持 MySQL 5.6 及以上版本。如果使用旧版 MySQL,需确认兼容性。