Se una distribuzione Java espone già un endpoint Jolokia autorizzato, un client di monitoraggio può leggere gli attributi JMX attraverso un normale proxy HTTP in avanti. Il client parla HTTP con Jolokia, che esegue l'operazione JMX lato applicazione.

monitor → HTTP proxy → HTTPS Jolokia endpoint → MBean

Questa via richiede un endpoint di gestione compatibile con HTTP. Puntare un client JMX nativo invariato verso il proxy web non ne crea uno.

Ad esempio, una lettura dell'utilizzo dell'heap della JVM può essere espressa come richiesta POST:

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/

L'endpoint e il proxy sono segnaposto. Questo usa un'operazione di lettura; il metodo HTTP POST trasporta la richiesta JSON di Jolokia invece di implicare una scrittura JMX. Jolokia supporta anche richieste GET per operazioni semplici, mentre JSON POST evita parte dell'escaping URL necessario per nomi MBean complessi.

Per un endpoint di gestione HTTPS, il proxy in avanti deve consentire la relativa destinazione del tunnel. TLS dovrebbe comunque verificare monitor.example.net. Il nome host e il certificato del proxy stesso, se la connessione al proxy usa TLS, descrivono un salto separato.

Tieni separate le due decisioni di autenticazione. Le opzioni di autenticazione proxy di curl forniscono un account proxy. L'autenticazione dell'endpoint fornisce l'identità di gestione, e la policy di Jolokia determina quali MBean e operazioni sono accessibili. Il permesso di usare il proxy in avanti non è permesso di amministrare la JVM.

Anche la risposta ha due livelli: lo stato del trasporto HTTP e il risultato dell'operazione JSON di Jolokia. Esamina i status e value restituiti invece di accettare qualsiasi corpo come metrica riuscita. Errori del proxy, fallimenti di autenticazione dell'endpoint e MBean mancanti richiedono modifiche diverse.

Se la distribuzione espone solo un connettore JMX nativo, scegli una via compatibile con quel connettore o predisponi un endpoint di gestione HTTP approvato. Un inoltro locale SSH è un'altra architettura di trasporto, ma resta una connessione al servizio nativo; non trasforma il suo protocollo nell'API HTTP di Jolokia.

Articoli correlati