Коннектор 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.