9104 是什么
9104 是 Prometheus 生态中 mysqld_exporter 的默认端口:它把 MySQL 的连接数、慢查询、主从延迟等状态转成标准指标,供 Prometheus 抓取、告警面板消费。exporter 需要持数据库凭证才能采集,通常通过 --config.my-cnf 指定凭据文件,因此它既是监控数据源,也是凭据持有者。凭证文件权限、监听地址与账号权限三层都要收紧。
基本信息
| 服务 | mysqld_exporter(默认 9104) |
|---|---|
| 协议 | TCP,HTTP,指标路径为 /metrics |
| 用途 | MySQL 指标采集 |
| 安全等级 | 仅监控网段 |
| 凭证方式 | --config.my-cnf 指定的凭据文件 |
典型使用场景
- 指标采集:连接数、查询量与主从延迟进入监控体系
- 告警配置:对延迟与连接数上限设置阈值
- 容量评估:按趋势判断是否需要扩容
- 故障复盘:用指标回溯故障时间点的状态变化
- 凭证治理:为 exporter 单独建最小权限账号
- 暴露面收敛:限制抓取来源与监听地址
启动与采集验证
启动与采集验证
mysqld_exporter --config.my-cnf=/etc/mysqld_exporter.cnf --web.listen-address=:9104 # 启动并限制监听
curl -s http://db01:9104/metrics | grep mysql_up # 核对采集是否成功
ss -lntp | grep 9104 # 确认监听地址与进程
chmod 600 /etc/mysqld_exporter.cnf # 凭据文件权限收紧关键指标读法
| 指标 | 含义 | 异常提示 |
|---|---|---|
| mysql_up | 采集是否成功 | 为 0 说明连接或认证失败 |
| 连接数类指标 | 当前连接与线程数 | 接近上限说明连接池或慢查询有问题 |
| 复制延迟类指标 | 主从延迟秒数 | 持续增大需检查复制链路 |
exporter 使用的数据库账号只需采集权限,不要图省事用管理员账号:采集器一旦被攻陷,账号权限就是攻击者的起点。
凭据文件里是明文口令,权限应设为仅拥有者可读,并避免放在可被 Web 服务访问的目录下。
抓取失败时先区分网络问题与认证问题:curl 指标接口看到 mysql_up 为 0,基本可以定位到连接或认证,而不是 Prometheus 配置。
监听地址默认可能是全网卡,建议显式指定内网地址或加访问控制,避免指标接口被随意读取。