在Kafka Brokers上启用JMX

sui*_*sui 22 jmx apache-kafka

我通过添加在Kafka经纪人上启用了JMX

KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true
                -Dcom.sun.management.jmxremote.authenticate=false
                -Dcom.sun.management.jmxremote.ssl=false
                -Djava.rmi.server.hostname=<server_IP>
                -Djava.net.preferIPv4Stack=true"
Run Code Online (Sandbox Code Playgroud)

但是,当我使用'kafka.tools.JmxTool'来获取指标时,它会输出不是预期行为的Unix时间戳.

./bin/kafka-run-class.sh kafka.tools.JmxTool \
  --object-name 'kafka.server:type=BrokerTopicMetrics,name=AllTopicsMessagesInPerSec' \
  --jmx-url "service:jmx:rmi:///jndi/rmi://<server_IP>:9111/jmxrmi"
Run Code Online (Sandbox Code Playgroud)

上面的命令打印出Unix时间戳.我该如何解决这个问题,并打印出指标?

cha*_*han 19

编辑bin/kafka-run-class.sh并设置KAFKA_JMX_OPTS变量

KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=your.kafka.broker.hostname -Djava.net.preferIPv4Stack=true"
Run Code Online (Sandbox Code Playgroud)

更新bin/kafka-server-start.sh添加以下行

export JMX_PORT=PORT
Run Code Online (Sandbox Code Playgroud)

  • 只有在 Kafka 服务启动之前 `export JMX_PORT=PORT` 就足以在我的 mac 上启用 JMX。我用 jconsole 测试了这个。如果你想连接生产者和消费者,在每个开始之前设置/导出不同的 jmx 端口。 (5认同)

Rah*_*hai 9

如果您在同一节点上运行 Zookeeper,则JMX_PORT内部设置bin/kafka-run-class.sh将与 Zookeeper 发生冲突。最好是JMX在相应的server-start脚本中单独设置端口:

  1. “export JMX_PORT=${JMX_PORT:-9998}”$KAFKA_HOME/bin/zookeeper-server-start.sh文件的最后一行之前插入一行。
  2. 重启 Zookeeper 服务器。
  3. 对集群中的所有 zookeeper 节点重复步骤 1 和 2。
  4. “export JMX_PORT=${JMX_PORT:-9999}”$KAFKA_HOME/bin/kafka-server-start.sh文件的最后一行之前插入一行。
  5. 重新启动 Kafka 代理。
  6. 对集群中的所有代理重复步骤 4 和 5。


eth*_*nny 8

如果您通过 systemd 运行:

  1. 编辑/etc/systemd/system/multi-user.target.wants/kafka.service
  2. 在“[service]”部分添加一行:
    • 环境=JMX_PORT=9989
  3. 重新加载: systemctl daemon-reload
  4. 重新开始: systemctl restart kafka
  5. 享用豆子: echo 'beans' | java -jar jmxterm-1.0-alpha-4-uber.jar -l localhost:9989 -n 2>&1


Mee*_*ack 7

您必须设置'JMX_PORT'变量,或将以下行添加到bin/kafka-server-start.sh.

export JMX_PORT=${JMX_PORT:-9999}
Run Code Online (Sandbox Code Playgroud)

那么您将能够连接到Kafka JMX指标.我使用jconsole工具和'localhost:9999'地址.


And*_*ity 0

使用kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec

AllTopics前缀在旧版本中使用。您可以使用指定主题kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=<topic-name>

源代码:http ://grokbase.com/t/kafka/users/164ksnhff0/enable-jmx-on-kafka-brokers