개요
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
에 아래 코드를 추가한다.
이후 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
라는 전제에서 아래와 같이 쿼리를 수행하면 전체 테이블을 확인 할 수 있다.
이후 아래와 같은 쿼리들이 가능하다.
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