JMX lezen via een HTTP-proxy met Jolokia
Gebruik de HTTP-interface van Jolokia wanneer een monitoringclient een voorwaartse webproxy moet passeren, met gescheiden proxy- en beheerreferenties.
Als een Java-implementatie al een geautoriseerd Jolokia-eindpunt blootstelt, kan een monitoringclient JMX-attributen lezen via een gewone voorwaartse HTTP-proxy. De client spreekt HTTP met Jolokia, dat de JMX-bewerking aan de applicatiekant uitvoert.
monitor → HTTP proxy → HTTPS Jolokia endpoint → MBean
Deze route vereist een beheereindpunt dat HTTP aankan. Een ongewijzigde native JMX-client naar de webproxy wijzen maakt er geen een.
Bijvoorbeeld, een uitlezing van het heapgebruik van de JVM kan worden uitgedrukt als een POST-verzoek:
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/
Het eindpunt en de proxy zijn plaatsaanduidingen. Dit gebruikt een leesbewerking; de HTTP-methode POST draagt Jolokia's JSON-verzoek en impliceert geen JMX-schrijfactie. Jolokia ondersteunt ook GET-verzoeken voor eenvoudige bewerkingen, terwijl JSON POST een deel van de URL-escaping vermijdt die nodig is voor complexe MBean-namen.
Voor een HTTPS-beheereindpunt moet de voorwaartse proxy de betreffende tunnelbestemming toestaan. TLS zou monitor.example.net nog steeds moeten verifiëren. De eigen hostnaam en het certificaat van de proxy, als de proxyverbinding zelf TLS gebruikt, beschrijven een aparte sprong.
Houd de twee authenticatiebeslissingen gescheiden. De proxy-authenticatieopties van curl leveren een proxyaccount. De authenticatie van het eindpunt levert de beheeridentiteit, en het beleid van Jolokia bepaalt welke MBeans en bewerkingen toegankelijk zijn. Toestemming om de voorwaartse proxy te gebruiken is geen toestemming om de JVM te beheren.
Het antwoord heeft ook twee lagen: de HTTP-transportstatus en het JSON-bewerkingsresultaat van Jolokia. Controleer de teruggegeven status en value in plaats van elk lichaam als een geslaagde metriek te accepteren. Proxyfouten, authenticatiefouten bij het eindpunt en ontbrekende MBeans vereisen verschillende wijzigingen.
Als de implementatie alleen een native JMX-connector blootstelt, kies een route die compatibel is met die connector of regel een goedgekeurd HTTP-beheereindpunt. Een lokale SSH-doorsturing is een ander transportontwerp, maar blijft een verbinding met de native dienst; het verandert het protocol niet in de HTTP-API van Jolokia.