2016-07-15 18 views
1

Ich benutze jmx zur Überwachung kafka Thema.mit Jmx Monitor Kafka Thema

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") 

Mit diesem Code kann ich die MeanRate von "Mytopic" auf Broker1 erhalten. aber ich habe 10 Broker, wie kann ich das "Mytopic" MeanRate von all meinen Brokern bekommen?

Ich habe versuchen "service: JMX: rmi: /// jndi/rmi: // broker1: 9393, broker2: 9393, broker3: 9393/jmxrmi"

einen Fehler bekam :(

Antwort

0

Es wäre schön, wenn es so einfach wäre;)

Es gibt keine Möglichkeit, dies zu tun, wie Sie beschrieben. Sie müssen eine separate Verbindung zu jedem Broker herstellen.

Eine mögliche Lösung wäre MBeanServer Federation zu verwenden, die Proxies für jedes Ihrer Makler in einem MBeanServer registrieren würde, also wenn Sie diese auf broker1 tun, konnte man zu service:jmx:rmi:///jndi/rmi://broker1:9393/jmxrmi und Abfrage der Statistiken für alle Makler in einer Verbindung Gehen Sie, aber Sie müssten 10 verschiedene ObjectNames abfragen, den Wert für jeden abfragen und dann den MeanRate selbst berechnen. [Java] Pseudo-Code:

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 

Hinweis: keine Ausnahmebehandlung, und ich gehe davon aus, den Rate-Typ ist ein Doppel.

Sie können auch eine benutzerdefinierte MBean erstellen und registrieren, die den Aggregatmittelwert für den Verbundbroker berechnet.

Wenn Sie Maven-orientiert sind, können Sie die OpenDMK von here erstellen.

Verwandte Themen