gpt4 book ai didi

java - 获取没有客户端 ID 的 kafka 主题指标

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:49 26 4
gpt4 key购买 nike

我正在尝试使用 JMX 收集 kafka 主题指标,以便我可以将它们打包到 java 中的对象中。 Kafka Docs显示 MBean 需要客户端 ID,但是我们的系统中没有设置任何客户端 ID。

让我相信无需客户端 ID 即可获取主题级别指标的事实是,我们的 Kafka Manager 实例服务能够提取主题指标。我发现他们使用 "kafka.server:name=MessagesInPerSec,topic=topic,type=BrokerTopicMetrics" 并尝试使用它,但没有结果。

我当前的代码是

try {
JMXServiceURL target = new
JMXServiceURL("service:jmx:rmi:///jndi/rmi://KAFKA_URL:9999/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(target);
MBeanServerConnection remote = connector.getMBeanServerConnection();
String beanName = "kafka.server:name=MessagesInPerSec,topic=topicName,type=BrokerTopicMetrics";
ObjectName bean = new ObjectName(beanName);
MBeanInfo info = remote.getMBeanInfo(bean);
LOGGER.info(info.getDescription());
MBeanAttributeInfo[] attributes = info.getAttributes();
for (MBeanAttributeInfo attr : attributes) {
LOGGER.info("^C " + attr.getName() + " " + remote.getAttribute(bean,attr.getName()));
}
connector.close();
}
catch(Exception e) {
LOGGER.info(e.getMessage());
}

我已经能够通过这种方法获得常规经纪人级别指标,只是当我尝试深入了解各个主题指标时,我失去了输出谢谢!

最佳答案

您上面粘贴的代码对我有用,它正确打印了该代理的指定主题的指标。但请注意,如果代理未托管指定主题的任何分区(或副本),您将收到InstanceNotFoundException

检索 MBean 名称的一种简单方法是使用 jconsole。您可以浏览指标,找到所需的指标后,您可以在“属性”下方的“操作”项中获取其名称。

否则,请使用 queryNames() 方法查找 MBeanServerConnection 上所有可用的 ObjectName:

Set<ObjectName> names = remote.queryNames(null, null);

关于java - 获取没有客户端 ID 的 kafka 主题指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56009475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com