使用jmx监视器kafka主题

时间:2016-07-15 10:21:23

标签: apache-kafka jmx

我正在使用jmx来监控kafka主题。

val url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://broker1:9393/jmxrmi");

 val jmxc = JMXConnectorFactory.connect(url, null);
 val mbsc = jmxc.getMBeanServerConnection();
 val messageCountObj = new ObjectName("kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=mytopic");
 val messagesInPerSec = mbsc.getAttribute(messageCountObj,"MeanRate")

使用此代码,我可以获得" mytopic"的平均值。在broker1上。 但我有10个经纪人,我如何从所有经纪人那里获得" mytopic"的MeanRate?

我试过"服务:jmx:rmi:/// jndi / rmi:// broker1:9393,broker2:9393,broker3:9393 / jmxrmi"

收到错误:(

1 个答案:

答案 0 :(得分:0)

如果那么简单就好了;)

如你所述,没有办法做到这一点。您需要与每个经纪人建立单独的连接。

一种可能的解决方案是使用MBeanServer Federation来为一个MBeanServer中的每个代理注册代理,因此如果您在 broker1 上执行此操作,则可以连接到{{1并且一次查询所有代理的统计信息,但是您需要查询10个不同的ObjectNames,查询每个的值,然后自己计算MeanRate。 [Java]伪代码:

service:jmx:rmi:///jndi/rmi://broker1:9393/jmxrmi

注意:没有异常处理,我假设费率类型是Double。

您还可以创建并注册一个自定义MBean,用于计算联合经纪人的聚合均值。

如果你是maven导向,你可以从here构建OpenDMK。