Коннектор JMX#

Коннектор JMX позволяет запрашивать информацию Java Management Extensions (JMX) со всех узлов кластера Trino. Это очень полезно для мониторинга и отладки. JMX предоставляет сведения о Java Virtual Machine и всем программном обеспечении, работающем внутри нее. Сам Trino активно инструментирован через JMX.

Этот коннектор можно настроить так, чтобы выбранная информация JMX периодически снималась и сохранялась в памяти для последующего доступа.

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

Чтобы настроить коннектор JMX, создайте файл свойств каталога etc/catalog/example.properties со следующим содержимым:

connector.name=jmx

Чтобы включить периодические снимки, задайте следующие свойства:

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). Он указывает, какие MBean опрашиваются и сохраняются в памяти каждые dump-period. Максимальное число исторических записей можно настроить с помощью max-entries; по умолчанию используется 86400. Интервал между снимками настраивается с помощью dump-period; по умолчанию он равен 10s.

Запятые в именах MBean необходимо экранировать двойными обратными косыми чертами (\\) следующим образом:

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; она содержит каждый MBean с каждого узла кластера Trino. Все доступные MBean можно увидеть, выполнив SHOW TABLES:

SHOW TABLES FROM example.current;

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

SELECT node, vmname, vmversion
FROM example.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 example.current."java.lang:type=operatingsystem";
 openfiledescriptorcount | maxfiledescriptorcount
-------------------------+------------------------
                     329 |                  10240
(1 row)

Символ подстановки * можно использовать с именами таблиц в схеме current. Это позволяет сопоставлять несколько объектов MBean в одном запросе. Следующий запрос возвращает информацию из разных пулов памяти Trino на каждом узле:

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 содержит список таблиц, настроенных в файле свойств коннектора. Таблицы имеют те же столбцы, что и в схеме current, но с дополнительным столбцом 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#

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