JMX коннектор#

JMX коннектор позволяет получать информацию о JMX (Java Management Extensions) всех узлов кластера CedrusData. JMX предоставляет информацию о Java-процессах в которых запущены узлы CedrusData. Данный функционал полезен для мониторинга и выявления различных проблем с кластером.

Коннектор так же может быть сконфигурирован для периодической выгрузки JMX информации и ее сохранении в памяти.

Конфигурация#

Для конфигурации JMX коннектора, создайте в директории etc/catalog файл <имя_каталога>.properties. Например, для создания каталога my_jmx необходимо создать файл my_jmx.properties. Добавьте в файл следующее содержимое:

connector.name=jmx

Для включения периодической выгрузки JMX информации добавьте следующие параметры (в качестве примера использованы таблицы java.lang:type=Runtime и trino.execution.scheduler:name=NodeScheduler):

connector.name=jmx
jmx.dump-tables=java.lang:type=Runtime,trino.execution.scheduler:name=NodeScheduler
jmx.dump-period=10s
jmx.max-entries=86400

dump-tables - это разделенный запятыми список названий Managed Beans (MBean), который указывает, состояние каких MBeans будет считано. Периодичность сохранения в памяти определена параметром dump-period. Размер истории состояний ограничен параметром max-entries. Параметры dump-period и max-entries имеют значения по умолчанию 10s и 86400, соответственно.

Запятые в названиях MBeans должны быть экранированы c помощью двойного символа \:

connector.name=jmx
jmx.dump-tables=trino.memory:name=general\\,type=memorypool,trino.memory:name=reserved\\,type=memorypool

Удвоение символа \ обусловлено тем, что одиночный символ \ используется для обозначения переноса строки:

connector.name=jmx
jmx.dump-tables=trino.memory:name=general\\,type=memorypool,\
    trino.memory:name=reserved\\,type=memorypool

Работа с JMX коннектором#

JMX коннектор имеет две схемы.

Схема current содержит все MBeans каждого узла кластера CedrusData. Используйте команду SHOW TABLES для отображения всех доступных MBeans:

SHOW TABLES FROM jmx.current;

Имена MBeans могут содержать нестандартные для имен таблиц символы. Поэтому для обращения к таблице соответствующего MBean следует использовать двойные кавычки. Так, следующий запрос отображает версии JVM для каждого узла:

SELECT node, vmname, vmversion
FROM jmx.current."java.lang:type=runtime";
                 node                 |              vmname               | vmversion
--------------------------------------+-----------------------------------+-----------
 ddc4df17-0b8e-4843-bb14-1b8af1a7451a | Java HotSpot(TM) 64-Bit Server VM | 24.60-b09
(1 row)

Следующий запрос отображает информацию о файловых дескрипторах для каждого узла:

SELECT openfiledescriptorcount, maxfiledescriptorcount
FROM jmx.current."java.lang:type=operatingsystem";
 openfiledescriptorcount | maxfiledescriptorcount
-------------------------+------------------------
                     329 |                  10240
(1 row)

Символ * может быть использован совместно с именем таблицы в схеме current, позволяя опрашивать несколько MBeans в одном запросе. Следующий запрос отображает информацию обо всех доступных пулов памяти (memory pool) в кластере:

SELECT freebytes, node, object_name
FROM example.current."trino.memory:*type=memorypool*";
 freebytes  |  node   |                       object_name
------------+---------+----------------------------------------------------------
  214748364 | example | trino.memory:type=MemoryPool,name=reserved
 1073741825 | example | trino.memory:type=MemoryPool,name=general
  858993459 | example | trino.memory:type=MemoryPool,name=system
(3 rows)

Схема history содержит список таблиц, для которых сконфигурирована периодическая выгрузка. Исторические таблицы содержат все те же колонки, что и оригинальные таблицы, а так же дополнительную колонку timestamp, которая отображает время выгрузки:

SELECT "timestamp", "uptime" FROM example.history."java.lang:type=runtime";
        timestamp        | uptime
-------------------------+--------
 2016-01-28 10:18:50.000 |  11420
 2016-01-28 10:19:00.000 |  21422
 2016-01-28 10:19:10.000 |  31412
(3 rows)

Поддержка SQL команд#

Коннектор поддерживает общие команды и команды чтения данных.