• JMX监控Kafka offset,kafka流量监控,kafka metrics


    import org.apache.kafka.common.MetricName;
    import org.apache.kafka.common.metrics.KafkaMetric;
    import org.apache.kafka.common.metrics.Metrics;
    
    import javax.management.AttributeNotFoundException;
    import javax.management.InstanceNotFoundException;
    import javax.management.MBeanException;
    import javax.management.MBeanServerConnection;
    import javax.management.MalformedObjectNameException;
    import javax.management.ObjectInstance;
    import javax.management.ObjectName;
    import javax.management.ReflectionException;
    import javax.management.remote.JMXConnector;
    import javax.management.remote.JMXConnectorFactory;
    import javax.management.remote.JMXServiceURL;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    
    public class KafkaCoreMetrics {
    
        public static void main(String[] args) {
            String jmxServiceURL = "service:jmx:rmi:///jndi/rmi://192.168.x.xx:9999/jmxrmi";
            JMXServiceURL jmxURL = null;
            JMXConnector jmxConnector = null;
            MBeanServerConnection jmxs = null;
            ObjectName objectName = null;
            Iterator sampleIter = null;
            Set sampleSet = null;
    
            try {
                jmxURL = new JMXServiceURL(jmxServiceURL);
                jmxConnector = JMXConnectorFactory.connect(jmxURL);
                jmxs = jmxConnector.getMBeanServerConnection();
    
                objectName = new ObjectName("kafka.server:type=BrokerTopicMetrics,name=TotalProduceRequestsPerSec,topic=*");
                sampleSet = jmxs.queryMBeans(null, objectName);
                sampleIter = sampleSet.iterator();
                while (sampleIter.hasNext()) {
                    ObjectInstance sampleObj = (ObjectInstance) sampleIter.next();
                    ObjectName sampleMbeanName = sampleObj.getObjectName();
    
                    String value =  jmxs.getAttribute(sampleMbeanName, "Count").toString();
                    System.out.println(sampleMbeanName.getCanonicalName() + "," + sampleMbeanName.getDomain() + "," + sampleMbeanName + "-----------va:" + value);
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (MalformedObjectNameException e) {
                e.printStackTrace();
            } catch (ReflectionException e) {
                e.printStackTrace();
            } catch (InstanceNotFoundException e) {
                e.printStackTrace();
            } catch (AttributeNotFoundException e) {
                e.printStackTrace();
            } catch (MBeanException e) {
                e.printStackTrace();
            }
            try {
                jmxConnector.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }


     


     

  • 相关阅读:
    函数对象类,函数对象(又称仿函数)
    HarmonyOS开发环境搭建
    Selenium教程:自动化浏览器测试工具
    AWS 中文入门开发教学 25- 高可用性设计 - 建立 ALB 负载均衡
    百数服务商模式:为制造业未来插上数字化的翅膀,创造商机!
    c++初始之二
    【数据结构】哈希应用——位图、布隆过滤器
    GBase 8s 检查点(checkpoint)
    COLING 2022 | CSL-大规模中文科学文献数据集
    linux添加普通用户并且只能访问指定目录
  • 原文地址:https://blog.csdn.net/u010479989/article/details/126610072