概要
JMX コネクタは、Presto クラスター内のすべてのノードに関する JMX 情報をクエリするために使用します。JMX コネクタは通常、システムモニタリングやデバッグに使用されます。コネクタの設定を変更することで、JMX 情報の定期的なダンプを実行できます。
設定
etc/catalog/jmx.properties ファイルを作成し、次の内容を追加して JMX コネクタを有効にします。
connector.name=jmx
設定ファイルに次の内容を追加することで、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は、カンマ (,) で区切られた Managed Beans (MBeans) のリストです。この設定では、各サンプリング期間中にサンプリングしてメモリに保存する MBean を指定します。dump-periodはサンプリング期間を示します。デフォルトは 10 s です。max-entriesは履歴レコードの最大数を示します。デフォルトは 86,400 です。
メトリクスの名前にカンマ (,) が含まれている場合は、次のように \\, を使用してエスケープする必要があります:
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 コネクタは、current と history の 2 つのスキーマを提供します。具体的には次のとおりです:
current には、各ノードの現在の MBean が含まれます。MBean 名は current のテーブル名と同じです。MBean 名に非標準文字が含まれている場合、クエリ中にテーブル名を引用符で囲む必要があります。MBean 名は、次のステートメントで取得できます:
SHOW TABLES FROM jmx.current;
例:
--- 各ノードの JVM 情報を取得する
SELECT node, vmname, vmversion
FROM jmx.current."java.lang:type=runtime";
node | vmname | vmversion
--------------+-----------------------------------+-----------
ddc4df17-xxx | 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)
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)