【问题标题】:How to monitor JMX metrics of Kafka broker on command line?如何在命令行上监控 Kafka 代理的 JMX 指标?
【发布时间】:2026-02-19 02:15:01
【问题描述】:

可以通过它公开的 JMX 指标来详细监控 Kafka 集群。通常需要将外部 GUI 或 jconsole 等应用程序连接到代理的公开 JMX_PORT 才能查看这些指标。

有没有一种方法可以通过STDOUT 在 SSH 会话中查看代理的 JMX 指标? 是否可以运行原生 Kafka 命令来查看这些指标?

【问题讨论】:

  • 这并不特定于 Kafka,但这里有一个先前的答案,其中包含许多命令行 JMX 实用程序的选项。 *.com/questions/1751130/…

标签: apache-kafka jmx


【解决方案1】:

使用kafka.tools.JmxTool

假设您在默认端口 9999 上有 enabled JMX on your broker,您只需运行此示例命令即可通过 STDOUT 打印出 BrokerTopics 的 jmx 指标

$ ./bin/kafka-run-class.sh kafka.tools.JmxTool \
  --object-name kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
Trying to connect to JMX url: service:jmx:rmi:///jndi/rmi://:9999/jmxrmi.
"time","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:Count","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:EventType","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:FifteenMinuteRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:FiveMinuteRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:MeanRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:OneMinuteRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:RateUnit"
1567587563143,0,messages,0.0,0.0,0.0,0.0,SECONDS
1567587565148,0,messages,0.0,0.0,0.0,0.0,SECONDS
1567587567150,0,messages,0.0,0.0,0.0,0.0,SECONDS
...

JmxTool 打印出每个 --reporting-interval 选项的 JMX 指标。

--reporting-interval

轮询 jmx 统计信息的时间间隔(以毫秒为单位)

默认值:2000(2 秒)

-1 的值等于--one-time true

【讨论】:

    【解决方案2】:

    下载位于此处的 jar:

    https://sourceforge.net/projects/cyclops-group/files/jmxterm/1.0-alpha-4/

    在机器上,然后运行:

    wget https://sourceforge.net/projects/cyclops-group/files/jmxterm/1.0-alpha-4/ -o jmxterm.jar

    java -jar jmxterm.jar

    >open localhost:$jmx_port

    帮助将在此之后为您提供所需的东西:)

    把这个罐子保存在有用的地方,我几乎每天都用它。

    【讨论】:

    • 这给出了“#RuntimeIOException: Runtime IO exception: Service URL must start with service:jmx:”虽然我使用的不是同一个 jar 而是“jmxterm-1.0.2-uber.jar”