개요

Presto에서 jmx 지표로 모니터링 하는 방법을 정리한다.

jmx 활성화 하기

프로퍼티 설정

jvm.config에 아래 코드가 추가되어야 한다.

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.rmi.port=9091

config.properties 에 아래 코드를 추가한다.

jmx.rmiregistry.port=9080
jmx.rmiserver.port=9081

이후 presto를 재시작 하면 jmx가 활성화 된다.

jmx connector 만들기

catalog/jmx.properties에 아래 내용을 만든다. dump-tables는 공식문서에는 나와있지 않지만 코드 찾아보니 *패턴이 지원되고 있다.

connector.name=jmx
jmx.dump-tables=presto.execution*,presto.failureDetector*,presto.memory*,java.lang:type=Runtime,java.lang:type=Threading
jmx.dump-period=60s
jmx.max-entries=86400

검증하기

jmx 모니터링 대시보드 연동

jolokia와 연동되는 모니터링 시스템에서 jmx remote port로 jmx.rmiregistry.port로 정의한 9090을 지정해주면 기본 시스템 metric을 확인 할 수 있다.

jmx connector로 조회하기

카탈로그명이 jmx라는 전제에서 아래와 같이 쿼리를 수행하면 전체 테이블을 확인 할 수 있다.

SHOW TABLES FROM jmx.current;

이후 아래와 같은 쿼리들이 가능하다.

select * from jmx.current."presto.execution:name=QueryManager"

select node, vmname, vmversion FROM jmx.current."java.lang:type=runtime"

select * from jmx.current."java.lang:type=Memory"

select * from jmx.current."presto.failureDetector:name=HeartbeatFailureDetector"

select * from jmx.current."presto.execution:name=taskmanager"

show create table jmx.current."presto.execution:name=taskmanager"

select * from jmx.current."presto.execution.executor:name=multilevelsplitqueue"

예를 들어 select * from jmx.current."presto.execution.executor:name=multilevelsplitqueue"를 수행하면 아래와 같은 결과가 나온다.

참고자료

  • https://prestosql.io/docs/current/admin/jmx.html
  • https://prestosql.io/docs/current/connector/jmx.html