2016-07-15 20 views
1

私はjmxを使用してカフカのトピックを監視しています。jmx monitor kafkaのトピックを使用

val url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://broker1:9393/jmxrmi"); 

val jmxc = JMXConnectorFactory.connect(url, null); 
val mbsc = jmxc.getMBeanServerConnection(); 
val messageCountObj = new ObjectName("kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=mytopic"); 
val messagesInPerSec = mbsc.getAttribute(messageCountObj,"MeanRate") 

このコードを使用して、私はbroker1で "mytopic"のMeanRateを得ることができます。 私は10人のブローカーを持っていますが、どのようにして私のブローカーから「mytopic」のMeanRateを得ることができますか?

私は、 "サービスを:JMX:RMI:/// JNDI/RMI:// broker1:9393、broker2:9393、broker3:9393/jmxrmi" しようとしている

をエラーを得た:(

答えて

0

それがシンプルであればよかったでしょう);

あなたが概説したようにこれを行う方法はありません。各ブローカーとは別に接続する必要があります。

一つの可能​​な解決策は、あなたが broker1にこれをしなかった場合、あなたは service:jmx:rmi:///jndi/rmi://broker1:9393/jmxrmiに接続し、1にすべてのあなたのブローカーの統計情報を照会することができるように、1のMBeanServerであなたのブローカーごとにプロキシを登録思われる MBeanServer Federationを使用することです

しかし、あなたは10の異なるObjectNamesを照会し、それぞれの値を照会してからMeanRateを計算する必要があります。 [Java]擬似コード:

ObjectName wildcard = new ObjectName("*:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=mytopic"); 
double totalRate = 0d; 
int respondingBrokers = 0; 
for(ObjectName on : mbsc.queryNames(wildcard, null)) { 
    totalRate += (Double)mbsc.getAttribute(messageCountObj,"MeanRate"); 
    respondingBrokers++; 
} 
// Average rate of mean rates: totalRate/respondingBrokers 

注:例外処理はありません。レートタイプはDoubleと仮定しています。

フェデレーテッドブローカーでの集計平均を計算したカスタムMBeanを作成して登録することもできます。

メイヴェン指向の方は、hereからOpenDMKをビルドすることができます。

関連する問題