Я только начал с простого примера, чтобы прочитать метрики jmx, и использовал простые значения HeapMemoryUsage, CPUTime и т. Д., Чтобы понять это.Мне нужно попытаться получить доступ к метрикам сервера / потребителя kafka, а именно к лагу, который, как я вижу, виден как ключ в приложении jconsole под FetcherLagMetrics-ConsumerLag.Но программным путем я получаю следующую ошибку:
javax.management.InstanceNotFoundException: kafka.consumer:type=consumer-
fetch-manager-metrics
Это говорит мне о том, что метрики customer-fetch-manager - это проблема, так как ее нет даже в jconsole.Я изменил его на следующую и все ту же проблему:
consumerBean = jmxCon.getMBeanServerConnection().getAttribute(new
ObjectName("kafka.server:type=FetcherLagMetrics"),"ConsumerLag");
cd = (CompositeData) consumerBean;
Код, пытающийся получить доступ к этим значениям, выглядит следующим образом:
jmxCon.getMBeanServerConnection().invoke(new
ObjectName("java.lang:type=Memory"), "gc", null, null);
for (int i = 0; i < 100; i++) {
//get an instance of the HeapMemoryUsage Mbean
memoryMbean = jmxCon.getMBeanServerConnection().getAttribute(new ObjectName("java.lang:type=Memory"), "HeapMemoryUsage");
cd = (CompositeData) memoryMbean;
//get an instance of the OperatingSystem Mbean
osMbean = jmxCon.getMBeanServerConnection().getAttribute(new ObjectName("java.lang:type=OperatingSystem"),"ProcessCpuTime");
//get an instance of the kafka metrics Mbean
consumerBean = jmxCon.getMBeanServerConnection().getAttribute(new ObjectName("kafka.consumer:type=consumer-fetch-manager-metrics"),"MaxLag");
cd = (CompositeData) consumerBean;
consumerBeanII = jmxCon.getMBeanServerConnection().getAttribute(new ObjectName("kafka.server:type=FetcherLagMetrics,name=ConsumerLag"),"Lag");
System.out.println("Used memory: " + " " + cd.get("MaxLag") + " Used cpu: " + consumerBean); //print memory usage
tempMemory = tempMemory + Long.parseLong(cd.get("used").toString());
Thread.sleep(1000); //delay for one second
}
Сбой в строке consumerBean = ...... Может кто-нибудь объяснить или предоставить правильный способ доступа к метрикам kafka с использованием реализации jmx / JMI?