kafka的官方文档上,已经列出了所有的mxbean,链接:http://kafka.apache.org/documentation.html#monitoring
通过jconsole也能看到。
package com.wxj.kafka.monitor.jmx; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Set; import javax.management.JMX; import javax.management.MBeanServerConnection; import javax.management.MalformedObjectNameException; import javax.management.ObjectInstance; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; import com.yammer.metrics.reporting.JmxReporter; /** * 通过rmi来调用kafka里的jmx信息 * @author root * */ public class JMX1 { public static void main(String[] args) { try { String rmiAddress = "192.168.199.131:9999"; HashMap<String, Object> prop = new HashMap<String, Object>(); JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + rmiAddress + "/jmxrmi"); JMXConnector conn = JMXConnectorFactory.connect(url, prop); MBeanServerConnection mbsc = conn.getMBeanServerConnection(); printAllTopicsBytesInPerSec(mbsc); //printAllTopicsBytesOutPerSec(mbsc); //printMBeans(mbsc); } catch (Exception e) { e.printStackTrace(); } } private static void printAllTopicsBytesOutPerSec(MBeanServerConnection mbsc) throws MalformedObjectNameException { String name = "\"kafka.server\":type=\"BrokerTopicMetrics\",name=\"AllTopicsBytesOutPerSec\""; ObjectName mbeanName = new ObjectName(name); JmxReporter.MeterMBean meterMBean = JMX.newMBeanProxy(mbsc, mbeanName, JmxReporter.MeterMBean.class); System.out.println(meterMBean.getCount() + "," + meterMBean.getEventType() + "," + meterMBean.getFifteenMinuteRate() + meterMBean.getFiveMinuteRate() + "," + meterMBean.getMeanRate() + "," + meterMBean.getOneMinuteRate() + "," + meterMBean.getRateUnit()); } private static void printAllTopicsBytesInPerSec(MBeanServerConnection mbsc) throws MalformedObjectNameException { String name = "\"kafka.server\":type=\"BrokerTopicMetrics\",name=\"AllTopicsBytesInPerSec\""; ObjectName mbeanName = new ObjectName(name); JmxReporter.MeterMBean meterMBean = JMX.newMBeanProxy(mbsc, mbeanName, JmxReporter.MeterMBean.class); System.out.println(meterMBean.getCount() + "," + meterMBean.getEventType() + "," + meterMBean.getFifteenMinuteRate() + meterMBean.getFiveMinuteRate() + "," + meterMBean.getMeanRate() + "," + meterMBean.getOneMinuteRate() + "," + meterMBean.getRateUnit()); } /** * 打印所有的mxbean * @param mbsc * @throws IOException */ private static void printMBeans(MBeanServerConnection mbsc) throws IOException { Set MBeanset = mbsc.queryMBeans(null, null); System.out.println("MBeanset.size() : " + MBeanset.size()); Iterator MBeansetIterator = MBeanset.iterator(); while (MBeansetIterator.hasNext()) { ObjectInstance objectInstance = (ObjectInstance) MBeansetIterator.next(); System.out.println(objectInstance.getObjectName()); } } }
相关推荐
xmemcached1.3.5源码-附带自己写的RMI调用它的JMX服务,使用RMI调用JMX服务的详细过程,完整的eclipse工程,直接导入即可用。还用一些运行截图,很有用。 自己写的例子,类名是BaseExample 和RMITest.
RMI远程方法调用RMI远程方法调用RMI远程方法调用RMI远程方法调用RMI远程方法调用
这个是基于C#的 RMI远程方法调用 这个是基于C#的 RMI远程方法调用这个是基于C#的 RMI远程方法调用
最近在学习代理模式,用到了java rmi远程调用,包含服务端和客户端,之前一直没有接触过,学习了java rmi远程调用,一方面可以了解代理模式,一方面熟悉java低层的远程
RMI简单远程调用,实现数字相加!代码简单易懂
Spring-RMI (RMI调用, HTTP调用) 本人测试过了
RMI采用JRMP(Java Remote Method Protocol)通讯协议,是构建在TCP/IP协议上的一种远程调用方法。它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象方法,从而使编程人员可以方便地在网络环境...
RMI远程调用,之前做的Demo希望对大家有所帮助!
rmi远程调用读取文件,以及各种简单的例子
NULL 博文链接:https://buralin.iteye.com/blog/1389172
实现java RMI 远程调用,包括 RMIServer RMIClient源码,测试用例。
用JAVA程序实现RMI,实现客户端和服务器间的时间同步,并计算出两端的时间差
jmx 实例 rmi mbean,采用rmi方式进行jmx的mbean管理,通过这个实例能够了解jmx的应用
JAVA RMI远程调用方法代码 RMI 远程 java
动态代理与RMI远程调用附有源码文件,以及ppt讲解
用java的rmi实现的 远程调用。希望对阁下有用
rmi 远程方法调用 客户端
RMI是Remote Method Invocation(远程方法调用)的 所写。它允许一个Java程序调用网络中另一台计算机上的Java方法,...实现RMI调用的程序和被调用的方法,都必须是Java代码,即客户端和服务器端都必须通过纯Java实现。
spring RMI 远程接口调用 包含服务端客户端程序,可完整运行
通过RMI实现远程调用一个JAVA小程序