Чтение JMX через HTTP-прокси с помощью Jolokia
Используйте HTTP-интерфейс Jolokia, когда клиенту мониторинга нужно пройти через прямой веб-прокси, с отдельными учётными данными прокси и управления.
Если развёртывание Java уже предоставляет авторизованную конечную точку Jolokia, клиент мониторинга может читать атрибуты JMX через обычный прямой HTTP-прокси. Клиент общается с Jolokia по HTTP, а Jolokia выполняет операцию JMX на стороне приложения.
monitor → HTTP proxy → HTTPS Jolokia endpoint → MBean
Этот путь требует конечной точки управления с поддержкой HTTP. Направление неизменённого нативного клиента JMX на веб-прокси её не создаёт.
Например, чтение использования кучи JVM можно выразить как 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/
Конечная точка и прокси — это заполнители. Здесь используется операция чтения; метод HTTP POST передаёт JSON-запрос Jolokia, а не подразумевает запись JMX. Jolokia также поддерживает GET-запросы для простых операций, тогда как JSON POST избегает части экранирования URL, необходимого для сложных имён MBean.
Для конечной точки управления HTTPS прямой прокси должен разрешать соответствующий пункт назначения туннеля. TLS всё равно должен проверять monitor.example.net. Собственное имя хоста и сертификат прокси, если само соединение с прокси использует TLS, описывают отдельный переход.
Держите два решения аутентификации раздельно. Параметры аутентификации прокси в curl задают учётную запись прокси. Аутентификация конечной точки задаёт идентичность управления, а политика Jolokia определяет, к каким MBean и операциям есть доступ. Разрешение на использование прямого прокси не является разрешением администрировать JVM.
Ответ тоже имеет два уровня: состояние транспорта HTTP и результат JSON-операции Jolokia. Проверяйте возвращённые status и value, а не принимайте любое тело за успешную метрику. Ошибки прокси, сбои аутентификации конечной точки и отсутствующие MBean требуют разных изменений.
Если развёртывание предоставляет только нативный коннектор JMX, выберите путь, совместимый с этим коннектором, или организуйте утверждённую конечную точку управления HTTP. Локальная переадресация SSH — это другая схема транспорта, но она остаётся подключением к нативному сервису; она не меняет его протокол на HTTP API Jolokia.