JMX#
CedrusData Catalog позволяет управлять поведение процесса и экспортировать различные метрики через интерфейс Java Management Extensions (JMX).
Настройка#
По умолчанию JMX доступен только для JMX-клиентов, запущенных на том же хосте, что и CedrusData Catalog.
Для работы с JMX с удаленных JMX-клиентов необходимо явно указать порт, на котором CedrusData Catalog запустит JMX агента:
jmx.remote-port=1099
Если вы хотите работать с JMX по протоколу RMI, необходимо также задать порт RMI с помощью параметра конфигурации jmx.remote-rmi-port
.
Данный порт может иметь такое же значение, как и jmx.remote-port
, или отличаться от последнего:
jmx.remote-port=1099
jmx.remote-rmi-port=1099
Если задан параметр jmx.remote-rmi-port
, вы также должны обязательно задать параметр JVM com.sun.management.jmxremote.rmi.port
в файле etc/jvm.config
.
Оба параметры должны иметь одинаковые значения.
Параметр каталога jmx.remote-port
семантически эквивалентен параметру JVM com.sun.management.jmxremote.port
,
а параметр каталога jmx.remote-rmi-port
семантически эквивалентен параметру JVM com.sun.management.jmxremote.rmi.port
.
Если вы запускаете каталог с данными параметрами JVM (файл etc/jvm.config
), то соответствующие параметры конфигурации
каталога должны иметь идентичные значения. В противном случае запуск каталога будет завершен с ошибкой.
Например, если вы добавили следующую конфигурацию в etc/jvm.config
:
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.rmi.port=1100
То в etc/config.properties
обязательно должны быть заданы следующие параметры:
jmx.remote-port=1099
jmx.remote-rmi-port=1100
Используйте параметры JVM для конфигурации JMX, если вы хотите задать дополнительную конфигурацию JMX, которая недоступна через etc/config.properties
.
Например, если вы хотите задать пароль для подключения к JMX, или включить SSL. Полный список параметров JVM для JMX доступен в
документации Java.
Полезные MBean#
Ниже приведен список некоторых часто используемых MBean.
Название |
Описание |
---|---|
|
Статистика обращения к каталогу через API. |
|
Статистика обращения к каталогу через протокол Iceberg REST Catalog. |
|
Статистика кэша пользователей. |
|
Статистика кэша таблиц Iceberg. |
|
Статистика встроенного HTTP сервера. |
|
Детальные статистики встроенного HTTP сервера, предоставляемые библиотекой Jetty. |
|
MBean для получения дампа потоков (thread dump). |
|
Встроенные MBean для управления JVM. |
Пример подключения из JConsole#
JConsole — это встроенная утилита Java, которая позволяет управлять Java-процессами через JMX.
Данный пример показывает как подключиться из jconsole
к CedrusData Catalog, запущенному в Docker-контейнере.
Убедитесь, что у вас установлен Docker Server, и команда
docker
не требуетsudo
Создайте файл конфигурации
config.properties
со включенным JMX-агентом:data-dir=/data/catalog admin-password=${ENV-OPTIONAL:CATALOG_ADMIN_PASSWORD} jmx.remote-port=1099
Запустите контейнер CedrusData Catalog:
docker run -d \ --name example-catalog \ -p 9080:9080 \ -p 1099:1099 \ -v $PWD/config.properties:/etc/catalog/config.properties \ cr.yandex/crpjtvqf29mpabhmrf1s/cedrusdata-catalog:458-1
Запустите JConsole (необходим установленный JDK) и подключитесь к процессу по адресу
localhost:1099
:jconsole localhost:1099
(при необходимости) Остановите контейнер и удалите ненужные ресурсы:
docker rm -f example-catalog rm config.properties