2016-08-07 15 views
0

Ich versuche Cassandra cfstats Informationen von allen Maschinen mit JMX kennenzulernen. Dies kann mit OpsCenter geschehen, aber ich möchte es nicht verwenden. Ich fing an, mein eigenes Dienstprogramm zu bauen. Momentan stellt mein Java-Programm eine Verbindung zu JMX her und ruft cfstats-Informationen ab, wie zum Beispiel "scheduleKeys", "No of SSTables" usw.etc.Cassandra JMX muss alle Knoten verbinden

Meine Anforderung ist, Dies ist eine Java JAR-Datei, wird von einem Cassandra-Knoten ausgeführt und sollte in der Lage sein, eine Verbindung zu allen Maschinen herzustellen und cfstats mit ihrem jeweiligen JMX pro Knoten abzurufen.

Ich plane, Java-Treiber dafür zu verwenden, da Java-Treiber in der Lage sein wird, alle Maschinen in dem Cluster unter Verwendung von system.peers cummnFamily zu verbinden. Sobald der Java-Treiber eine Verbindung zu den Rechnern herstellt, werde ich den Dienst jmx: rmi mit dem entsprechenden Hostnamen und dem JMX-Port (7199) bilden. Dann kann ich mit diesen Informationen eine Verbindung zu NodeProbe herstellen.

Meine Frage ist, nach der Verbindung zu einem anderen Knoten mit Java-Treiber, kann ich Zustand dort und nach Bildung Service halten: jmx: rmi URL, wird diese URL wirklich mit dem aktuellen Knoten JMX verbindet und cfstats Informationen ziehen vom aktuellen Knoten. Da der JMX-Hostname aus der Cassandra-env.sh-Datei stammt. Kann mir bitte jemand dabei helfen?

Funktioniert diese Idee oder gibt es einen anderen besten Weg, dies zu erreichen?

Antwort

1

Es ist möglich, JMX remotely zu verwenden, aber das ist nicht die einfachste Sache zu tun.

Aber wenn Sie Ihr Werkzeug schreiben - vielleicht lohnt es sich, eine andere Verbindung zu überprüfen. Z.B. Sie können JMX Anrufe einfach in HTTP umwandeln mit Jolokia

+0

Vielen Dank für Ihre Zeit auf diesem Deniszh. Ich werde die Machbarkeit prüfen und Sie wissen lassen. –

+0

Hallo alle, irgendwelche anderen Ideen zu meinen Fragen oben? –

Verwandte Themen