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.

Artigos relacionados