Wenn eine Java-Bereitstellung bereits einen autorisierten Jolokia-Endpunkt bereitstellt, kann ein Monitoring-Client JMX-Attribute über einen gewöhnlichen vorgelagerten HTTP-Proxy lesen. Der Client spricht HTTP mit Jolokia, das die JMX-Operation auf der Anwendungsseite ausführt.

monitor → HTTP proxy → HTTPS Jolokia endpoint → MBean

Dieser Weg erfordert einen HTTP-fähigen Verwaltungsendpunkt. Einen unveränderten nativen JMX-Client auf den Web-Proxy zu richten, erzeugt keinen.

Beispielsweise lässt sich ein Lesen der Heap-Nutzung der JVM als POST-Anfrage ausdrücken:

curl --proxy http://proxy.example.net:8080 \
  --header 'Content-Type: application/json' \
  --data '{"type":"read","mbean":"java.lang:type=Memory","attribute":"HeapMemoryUsage","path":"used"}' \
  https://monitor.example.net/jolokia/

Endpunkt und Proxy sind Platzhalter. Dies verwendet eine Leseoperation; die HTTP-Methode POST überträgt Jolokias JSON-Anfrage, statt einen JMX-Schreibvorgang zu implizieren. Jolokia unterstützt auch GET-Anfragen für einfache Operationen, während JSON POST einen Teil der URL-Maskierung vermeidet, die für komplexe MBean-Namen nötig ist.

Für einen HTTPS-Verwaltungsendpunkt muss der vorgelagerte Proxy das betreffende Tunnelziel zulassen. TLS sollte monitor.example.net weiterhin prüfen. Der eigene Hostname und das Zertifikat des Proxys, sofern die Proxy-Verbindung selbst TLS nutzt, beschreiben einen separaten Sprung.

Halten Sie die beiden Authentifizierungsentscheidungen getrennt. Die Proxy-Authentifizierungsoptionen von curl liefern ein Proxy-Konto. Die Authentifizierung des Endpunkts liefert die Verwaltungsidentität, und Jolokias Richtlinie bestimmt, auf welche MBeans und Operationen zugegriffen werden kann. Die Berechtigung, den vorgelagerten Proxy zu nutzen, ist keine Berechtigung, die JVM zu administrieren.

Auch die Antwort hat zwei Ebenen: den HTTP-Transportstatus und das JSON-Operationsergebnis von Jolokia. Prüfen Sie die zurückgegebenen status und value, statt jeden Body als erfolgreiche Metrik zu akzeptieren. Proxy-Fehler, Authentifizierungsfehler am Endpunkt und fehlende MBeans erfordern unterschiedliche Änderungen.

Wenn die Bereitstellung nur einen nativen JMX-Connector bereitstellt, wählen Sie einen mit diesem Connector kompatiblen Weg oder richten Sie einen genehmigten HTTP-Verwaltungsendpunkt ein. Eine lokale SSH-Weiterleitung ist ein anderes Transportdesign, bleibt aber eine Verbindung zum nativen Dienst; sie ändert dessen Protokoll nicht in Jolokias HTTP-API.

Ähnliche Artikel