JMX 连接器¶
JMX 连接器提供从 Presto 集群中的所有节点查询 JMX 信息的功能。这对于监控或调试非常有用。Java 管理扩展 (JMX) 提供有关 Java 虚拟机及其内部运行的所有软件的信息。Presto 本身通过 JMX 进行了大量检测。
此连接器也可以配置,以便将选择的 JMX 信息定期转储并存储在内存中,以便以后访问。
配置¶
要配置 JMX 连接器,请创建一个目录属性文件 etc/catalog/jmx.properties
,其中包含以下内容
connector.name=jmx
要启用定期转储,请定义以下属性
connector.name=jmx
jmx.dump-tables=java.lang:type=Runtime,com.facebook.presto.execution.scheduler:name=NodeScheduler
jmx.dump-period=10s
jmx.max-entries=86400
dump-tables
是一个逗号分隔的管理 Bean (MBean) 列表。它指定哪些 MBean 将被采样并存储在内存中,每隔 dump-period
。历史记录将具有有限的条目大小,为 max-entries
条目。dump-period
和 max-entries
都有默认值,分别为 10s
和 86400
。
MBean 名称中的逗号应该以以下方式转义
connector.name=jmx
jmx.dump-tables=com.facebook.presto.memory:type=memorypool\\,name=general,\
com.facebook.presto.memory:type=memorypool\\,name=system,\
com.facebook.presto.memory:type=memorypool\\,name=reserved
查询 JMX¶
JMX 连接器提供三个模式:current
、history
和 information_schema
。
当前模式¶
current
模式包含 Presto 集群中每个节点的每个 MBean。要查看所有可用的 MBean,请运行 SHOW TABLES
SHOW TABLES FROM jmx.current;
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
模式中的表名。这允许在单个查询中匹配多个 MBean 对象。以下查询返回每个节点上不同 Presto 内存池的信息
SELECT freebytes, node, object_name
FROM jmx.current."com.facebook.presto.memory:*type=memorypool*";
freebytes | node | object_name
------------+---------+----------------------------------------------------------
214748364 | example | com.facebook.presto.memory:type=MemoryPool,name=reserved
1073741825 | example | com.facebook.presto.memory:type=MemoryPool,name=general
858993459 | example | com.facebook.presto.memory:type=MemoryPool,name=system
(3 rows)
历史模式¶
history
模式包含连接器属性文件中配置的表列表。这些表与当前模式中的表具有相同的列,但另外还有一个时间戳列,用于存储快照拍摄的时间
SELECT "timestamp", "uptime" FROM jmx.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)
信息模式¶
information_schema
包含有关所有其他模式的元数据。要列出此模式中所有可用的表,请运行以下命令
SHOW TABLES FROM jmx.information_schema;