You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prometheus无法抓取MySQL Exporter指标的问题求助

MySQL Exporter指标无法被Prometheus抓取的解决方案

1. 确认容器网络连通性

首先验证Prometheus容器能否访问MySQL Exporter容器:

# 在Prometheus容器内ping MySQL Exporter容器名
docker exec -it my-prometheus ping mysql80-exporter

如果无法ping通,检查两者是否在同一个Docker网络:

# 查看Prometheus容器所属网络
docker inspect my-prometheus | grep -A5 Networks
# 查看MySQL Exporter容器所属网络
docker inspect mysql80-exporter | grep -A5 Networks

若不在同一网络,将Prometheus容器加入db_network:

docker network connect db_network my-prometheus

2. 检查MySQL Exporter监听地址

部分版本的mysqld-exporter默认仅监听127.0.0.1,导致容器内无法通过容器名访问。查看Exporter日志确认监听地址:

docker logs mysql80-exporter

如果日志显示Listening on 127.0.0.1:9104,需修改启动命令,强制监听所有网卡:

# 停止并删除旧容器
docker stop mysql80-exporter && docker rm mysql80-exporter
# 重新启动容器,添加--web.listen-address参数
docker run -d \
--name mysql80-exporter \
--publish 9104 \
--network db_network \
--restart always \
--env DATA_SOURCE_NAME="exporter:exporterpassword@(mysql80:3306)/" \
prom/mysqld-exporter:latest \
--web.listen-address=0.0.0.0:9104 \
--collect.info_schema.processlist \
--collect.info_schema.innodb_metrics \
--collect.info_schema.tablestats \
--collect.info_schema.tables \
--collect.info_schema.userstats \
--collect.engine_innodb_status

3. 验证Prometheus配置文件有效性

检查Prometheus容器内的配置是否正确挂载:

docker exec -it my-prometheus cat /etc/prometheus/prometheus.yml

确认mysql job的targets配置为['mysql80-exporter:9104']。若配置有误,修改本地prometheus.yml后重启容器:

docker restart my-prometheus

也可通过Prometheus Web UI的/config路径查看当前加载的配置。

4. 排查MySQL Exporter的数据库连接权限

查看Exporter日志,确认是否存在数据库连接错误:

docker logs mysql80-exporter

若出现权限或连接失败提示,重新授权监控用户:

# 进入MySQL容器
docker exec -it mysql80 mysql -uroot -p

执行SQL命令重置用户权限:

DROP USER 'exporter'@'%';
CREATE USER 'exporter'@'%' IDENTIFIED BY 'exporterpassword' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
FLUSH PRIVILEGES;

完成后重启MySQL Exporter容器:

docker restart mysql80-exporter

5. 在Prometheus容器内直接测试指标抓取

在Prometheus容器内尝试访问MySQL Exporter的指标端点:

docker exec -it my-prometheus curl mysql80-exporter:9104/metrics

如果能正常获取指标,说明问题出在Prometheus的抓取配置或服务发现;如果无法获取,回到网络或Exporter本身的排查步骤。


内容的提问来源于stack exchange,提问作者Soumya Ghosal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:45:38