Ler JMX através de um proxy HTTP com Jolokia
Use a interface HTTP do Jolokia quando um cliente de monitorização tiver de atravessar um proxy web de encaminhamento, com credenciais separadas de proxy e de gestão.
Se uma implementação Java já expõe um endpoint Jolokia autorizado, um cliente de monitorização pode ler atributos JMX através de um proxy HTTP de encaminhamento comum. O cliente fala HTTP com o Jolokia, que executa a operação JMX do lado da aplicação.
monitor → HTTP proxy → HTTPS Jolokia endpoint → MBean
Esta rota exige um endpoint de gestão compatível com HTTP. Apontar um cliente JMX nativo inalterado para o proxy web não cria um.
Por exemplo, uma leitura do uso de heap da JVM pode ser expressa como um pedido 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/
O endpoint e o proxy são espaços reservados. Isto usa uma operação de leitura; o método HTTP POST transporta o pedido JSON do Jolokia em vez de implicar uma escrita JMX. O Jolokia também suporta pedidos GET para operações simples, enquanto o JSON POST evita parte do escape de URL necessário para nomes de MBean complexos.
Para um endpoint de gestão HTTPS, o proxy de encaminhamento tem de permitir o destino de túnel relevante. O TLS deve continuar a verificar monitor.example.net. O nome de anfitrião e o certificado do próprio proxy, se a ligação ao proxy usar TLS, descrevem um salto separado.
Mantenha as duas decisões de autenticação separadas. As opções de autenticação de proxy do curl fornecem uma conta de proxy. A autenticação do endpoint fornece a identidade de gestão, e a política do Jolokia determina que MBeans e operações são acessíveis. A permissão para usar o proxy de encaminhamento não é permissão para administrar a JVM.
A resposta também tem duas camadas: o estado de transporte HTTP e o resultado da operação JSON do Jolokia. Examine os status e value devolvidos em vez de aceitar qualquer corpo como métrica bem-sucedida. Erros de proxy, falhas de autenticação no endpoint e MBeans ausentes exigem alterações diferentes.
Se a implementação expõe apenas um conector JMX nativo, escolha uma rota compatível com esse conector ou disponibilize um endpoint de gestão HTTP aprovado. Um encaminhamento local SSH é outro desenho de transporte, mas continua a ser uma ligação ao serviço nativo; não altera o seu protocolo para a API HTTP do Jolokia.