我剛開始用一個簡單的例子來讀取 jmx 指標,并使用 HeapMemoryUsage、CPUTime 等的簡單值來感受它。我需要嘗試訪問 kafka 服務器/消費者指標,特別是滯后,我可以看到它在 FetcherLagMetrics-ConsumerLag 下的 jconsole 應用程序中可見。但以編程方式我收到以下錯誤:javax.management.InstanceNotFoundException: kafka.consumer:type=consumer- fetch-manager-metrics這告訴我消費者獲取管理器指標是問題,因為它甚至在 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 = 行失敗 ......有人可以解釋或提供使用 jmx /JMI 實現訪問 kafka 指標的正確方法嗎?
添加回答
舉報
0/150
提交
取消