2016-08-15 5 views
0

Gibt es eine vorhandene Einstellung/einen verfügbaren Agentencode, mit der ich Daten sammeln und JMX-Daten einfach an einen Remote-Server weiterleiten kann: Port?JMX-Daten an Remote-Server senden (JMX-Weiterleitung?)

java -DjmxForwardAddr=x.x.x.x -DjmxForwardPort=12345 ... ? 

Kontext: Ich verwende Splunk für unternehmensweite Datensuche/Reporting, und möchte es mit einem JMX Zuhörer konfigurieren (der einfache Teil) und Setup irgendwie alle JVMs, dass die Daten nur liefern als JSON/XML/etc zu Splunk.

Ich bin auf der Suche nach einem "Push" -Ansatz, anstatt "Pull" -Methode, wo ich Tausende von Ports zuweisen und verwalten und sie abfragen.

Wir haben viele Apps, und ich möchte eine nette Möglichkeit, den Start nur zu optimieren, um dies zu ermöglichen.

Java und JMX sind keine Dinge, mit denen ich viel Erfahrung habe, also suche ich vielleicht nach falschen Begriffen/falschen Fragen. Ich bin offen für jede bessere Möglichkeit, auch dies zu erreichen.

bearbeiten 2016.09.01:

ich nicht in der Lage gewesen, etwas klein und zuverlässig zu finden, dies zu tun. Durch die Forschung wurde ich auch über diesen Ansatz (der als Java-Agent läuft) besorgt, da jedes Fehlverhalten das Elternprogramm negativ beeinflussen könnte.

Mit einem externen Ansatz würde ich jmxtrans würde die Rechnung passen. Es funktionierte etwas, aber hätte noch einen eigenen Output Writer schreiben müssen, um die Ausgabe für Splunk zu bereinigen.

Momentan gehe ich mit einem Splunk-gelieferten solution voran, der eine konfigurierbare Liste von Zielen abfragt und diese Daten aufnimmt. Kann nicht immer bekommen, was Sie wollen (es sei denn, Sie schreiben es selbst ...)

Antwort

0

JMX API bieten eine Möglichkeit zum Erstellen von MBeans, die Benachrichtigungen generieren.

Werfen Sie einen Blick auf https://docs.oracle.com/javase/8/docs/api/javax/management/NotificationEmitter.html und https://docs.oracle.com/javase/8/docs/api/javax/management/NotificationBroadcaster.html

+0

das sieht hilfreich aus, aber ich suchte nach etwas, das bereits gebaut wurde. –

+0

Meinst du sowas wie appdynamics? –

+0

möglicherweise, obwohl mir das nicht vertraut ist. CA APM (wily/introscope) verfügt über diese Funktionalität, in der die Metriken an einen zentralen Server gesendet werden. –

0

ich mit zabbix ähnlichen Problemen konfrontiert. Es wurde verwendet, um JMX-Daten aus der Java-Anwendung zu lesen (zu ziehen), wodurch eine große Anzahl von Ports geöffnet wurde. Hier bestand das Problem, dass es in der Produktionsumgebung keine Garantie gibt, ob diese Ports hinter der Firewall stehen oder nicht. Um das zu lösen, haben wir Jolokia verwendet. Jolokia läuft als eine andere Anwendung (wenn Sie Tomcat usw. verwenden) zusammen mit Ihrer Anwendung. Wenn Ihre Anwendung eine einfache Java-Anwendung ist, kann sie als jar im Klassenpfad verwendet werden (d. H., Sie lässt sich sehr einfach in vorhandene Java-Anwendungen integrieren). Es stellt JMX-Daten über HTTP (JSON) zur Verfügung. Also, wenn Splunk ein Plugin hat, das Daten über HTTP lesen kann, ist es gut zu gehen.

+0

danke für den Vorschlag - es sieht sehr praktisch aus. obwohl ich damit auch ein Retrieval-System implementieren müsste, um die Daten zu bekommen. Ich habe Jolokia als zukünftiges Forschungsthema markiert, für den Fall, dass ich mit der vom Anbieter bereitgestellten Lösung zu unzufrieden bin. –

+0

Für zabbix habe ich ein Drittanbieter-Gateway verwendet, um diese Aufgabe zu erledigen. https://bitbucket.org/ryanrupp/zabbix-java-gateway/wiki/Home. Ich bin mir nicht sicher, ob es auch etwas Ähnliches für Splunk gibt. –