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

JMX Trans启动报5555端口已占用故障排查

报错根因

报错是两个配置问题叠加导致的:

  • 第一个问题是jmxtrans启动脚本默认会为自身进程开启JMX监控服务,默认监听端口就是5555,和你给Kafka配置的JMX端口完全重合,Kafka已经先行绑定了5555端口,所以jmxtrans启动时尝试绑定同端口直接抛出Port already in use: 5555错误。
    对应脚本里的默认配置逻辑:
    # 未手动传入JMX_PORT变量时,默认取值5555
    JMX_PORT=${JMX_PORT:-"5555"}
    # 启动参数中强制开启自身JMX监听,绑定上述JMX_PORT
    MONITOR_OPTS=${MONITOR_OPTS:-"-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=${JMX_PORT}"}
    
  • 第二个问题是你jvm.json中配置的待采集Kafka地址端口错误:配置里填的9072是Kafka的业务服务端口,不是JMX端口(你实际配置的Kafka JMX端口是5555)。这也解释了为什么你把JMX端口改成其他未占用端口后不再报端口占用,但会出现连接超时——此时jmxtrans自身可以正常启动,但它尝试用JMX协议连接Kafka的业务端口9072,协议不匹配、端口服务不对,自然连接失败。
修复步骤
  • 处理jmxtrans自身端口冲突:启动jmxtrans时手动指定一个未被任何进程占用的端口作为jmxtrans自身的JMX监听端口,避开Kafka占用的5555,示例启动命令:
    JAR_FILE=jmxtrans-259-all.jar JMX_PORT=15555 jmxtrans.sh jvm.json
    
    如果你不需要监控jmxtrans自身的JVM运行指标,也可以直接注释掉jmxtrans.sh脚本中定义MONITOR_OPTS的整行代码,彻底关闭jmxtrans自身的JMX监听功能,从根源避免这类端口冲突。
  • 修正Kafka JMX采集配置:打开jvm.json,将servers配置块下的port值从9072改为Kafka实际的JMX端口5555,同时确认host值填写为Kafka JMX配置中java.rmi.server.hostname对应的主机地址(即你配置的isstdkafld01),其余InfluxDB输出、指标采集规则保持原有配置即可。修正后的核心配置片段:
    {
      "servers" : [ {
        "port" : "5555",
        "host" : "isstdkafld01",
        "alias": "kafka-1",
        "numQueryThreads" : 1,
        "queries" : [
          // 原有查询、输出配置无需修改
        ]
      } ]
    }
    
  • 完成上述修改后重新启动jmxtrans,即可正常采集Kafka JMX指标写入InfluxDB。

内容的提问来源于stack exchange,提问作者Bünyamin Şentürk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 12:57:45