问题分析:JMX Exporter 采集异常
从你两条 curl 结果,核心异常指标完全一致:
plaintext
jmx_scrape_error 1.0
含义:JMX Exporter 本轮采集失败,无法拉取目标 JVM 的 JMX 指标,只暴露了 exporter 自身监控,没有业务/Hadoop 组件指标。
一、关键现象总结
1. 两个节点 19003 / 29002 端口的 jmx-exporter 进程正常监听、可通;
2. exporter 进程本身无崩溃、配置重载无失败;
3. 核心故障: jmx_scrape_error=1 ,JMX 连接/读取 MBean 失败;
4. 采集耗时 60s 左右,明显超时,是连接超时/认证拒绝/MBean 路径错误典型特征。
二、故障根因(按概率排序)
1. 目标 JVM JMX 服务不可达(最高概率)
- Hadoop 组件(Hive/Spark/Kafka/HDFS 等)JMX 端口未开启、防火墙拦截、IP 绑定 127.0.0.1 仅本地访问;
- 进程挂死、僵死,JMX RMI 服务无响应,导致 exporter 60s 超时报错。
2. JMX 认证/权限问题
目标 JVM 配置了:
- JMX 账号密码认证
- SSL 加密
- 白名单IP限制
但 jmx-exporter 配置文件(.yml)未配置对应账号、SSL、访问白名单,直接拒绝连接。
3. jmx-exporter 配置文件错误
- rules 规则写错、MBean ObjectName 格式非法
- 目标 jmxUrl 填写错误(IP:端口、rmi 路径错误)
- 配置文件挂载/加载异常,但你这里 config_reload_failure_total=0 ,排除配置文件语法错误。
4. 版本兼容问题
当前 exporter 版本: 0.13.1-SNAPSHOT 定制快照版
部分 Hadoop 高版本、JDK11+ 环境,老旧 jmx-exporter 存在 RMI 连接兼容 bug。
三、快速排查步骤(直接照着执行)
步骤1:验证目标JVM原生JMX连通性
先确认被采集的Hadoop组件JMX端口(比如 9010、9011 等)
bash
# 本机测试JMX端口通不通
telnet 目标服务IP JMX端口
# 或
nc -zv 目标服务IP JMX端口
不通 → 防火墙/端口未开放/进程异常。
步骤2:手动测试JMX连接(精准定位)
使用 jconsole / jmxterm 手动连接目标 JMX 地址:
bash
# 示例 rmi 连接格式
service:jmx:rmi:///jndi/rmi://目标IP:JMX端口/jmxrmi
- 连不上 = 目标JMX服务问题
- 要账号密码 = exporter 缺少认证配置
步骤3:查看 jmx-exporter 启动日志
bash
# 查看启动日志、实时报错
journalctl -u jmx-exporter.service -f
# 或容器/进程日志
tail -f 你的exporter日志目录/jmx_exporter.log
日志会直接打印: Connect refused / Timeout / Authentication failed 明确错误。
步骤4:检查 exporter 核心配置
查看启动命令的 config.yml 里的:
yaml
jmxUrl: "service:jmx:rmi://xxxx"
username: ""
password: ""
ssl: false
核对地址、认证、SSL 开关是否和目标 JVM 一致。
四、临时修复方案
1. 重启对应Hadoop组件进程(解决进程僵死、JMX假死);
2. 放行服务器间 JMX 端口、取消 JMX 本地绑定( -Djava.rmi.server.hostname=业务IP );
3. 若有账号密码,在 jmx-exporter 配置中补全认证信息;
4. 临时降低采集超时时间(默认60s太长),优化抓取参数。
五、监控侧影响
- Prometheus 只能拿到 jmx_exporter 自身指标,无 Hadoop 核心指标(内存、GC、线程、队列、读写等全部缺失);
- 大盘、告警、监控面板全部断联,失去该组件观测能力。