Trino 는 OpenMetrics 규격의 메트릭을 코디네이터와 워커 각각의 /metrics 엔드포인트로 노출한다. 별도 익스포터를 붙이지 않아도 Prometheus 가 바로 스크랩할 수 있다. 내부적으로는 JMX MBean 값을 OpenMetrics 형식으로 변환해 내보내는 구조라서, 노출 대상은 JMX 오브젝트 이름으로 고른다.[1]
/v1/metrics 가 아니라 /metrics 다. 경로를 잘못 적으면 404 가 나고, Prometheus 쪽에서는 타깃이 down 으로만 보여 원인을 짚기 어렵다.
인증을 걸지 않은 개발 환경이라면 사용자 헤더만 넣어 바로 확인한다.
curl -s -H 'X-Trino-User: monitoring' http://<coordinator>:8080/metrics | head -30
노드마다 자기 자신의 메트릭만 내보낸다. 코디네이터 한 대만 스크랩하면 워커의 JVM · 태스크 지표는 들어오지 않으므로, 워커도 스크랩 대상에 넣는다.
노출할 MBean 범위는 config.properties 에서 조정한다.
openmetrics.jmx-object-names=java.lang:*|trino.execution:name=QueryManager|trino.memory:*
/metrics 는 웹 UI · 클라이언트 프로토콜과 동일한 인증이 적용된다. 인증을 켜 두었다면 스크랩 설정에도 같은 자격을 넣어야 한다. 또한 보안이 걸린 배포에서는 해당 계정이 시스템 정보 읽기 권한을 가지고 있어야 한다.
인증이 없는 내부망이라면 다음으로 충분하다.
scrape_configs:
- job_name: trino
metrics_path: /metrics
static_configs:
- targets:
- trino-coordinator:8080
- trino-worker-1:8080
- trino-worker-2:8080
HTTPS 와 비밀번호 인증을 쓰는 경우는 다음과 같다. 비밀번호는 설정 파일에 직접 적지 말고 password_file 로 뺀다.
scrape_configs:
- job_name: trino
scheme: https
metrics_path: /metrics
basic_auth:
username: monitoring
password_file: /etc/prometheus/secrets/trino_password
tls_config:
ca_file: /etc/prometheus/secrets/ca.crt
static_configs:
- targets: ['trino-coordinator:8443']
사설 인증서를 쓴다면 insecure_skip_verify: true 로 넘기기보다 발급에 쓴 CA 인증서를 ca_file 로 지정한다. 검증을 끄면 중간자 공격을 막지 못한다.
/metrics 로도 JVM 지표(java.lang:*)가 나오므로 대부분의 경우 JMX 익스포터는 필요 없다. 다음 두 경우에만 검토한다.
/metrics 가 없는 경우이때는 jvm.config 에 자바 에이전트를 붙인다.
-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent.jar=9404:/opt/jmx_exporter/trino.yaml
JMX 익스포터가 여는 HTTP 서버는 오랫동안 인증을 지원하지 않았고, 최근 버전에서 HTTPS · Basic 인증 설정이 들어왔다. 쓰려는 버전이 무엇을 지원하는지 릴리스 노트로 확인하고, 지원하지 않으면 리버스 프록시로 감싼다.
server {
listen 9443 ssl;
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
location / {
auth_basic "metrics";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:9404;
}
}
익스포터가 여는 포트(9404)는 루프백에만 바인딩하거나 방화벽으로 막는다. 프록시를 세워 두고 원래 포트를 열어 두면 우회 경로가 남는다.
-Dcom.sun.management.jmxremote.authenticate=false · ssl=false 조합으로 원격 JMX 포트를 여는 예제가 흔히 돌아다닌다. 이 조합은 인증 없이 MBean 조작을 허용하므로 운영 환경에서는 쓰지 않는다. 진단 목적으로 잠시 필요하면 다음을 지킨다.
jmxremote.password · jmxremote.access)과 SSL 을 함께 켠다chmod 600. 권한이 느슨하면 JVM 이 기동 자체를 거부한다# jmxremote.access
monitorRole readonly
/v1/metrics 로 적는다 — 그런 경로는 없다. /metrics 다jvm.config 에 GC 로그 옵션을 JDK 8 문법으로 적는다 — -XX:+PrintGCDetails · -Xloggc: 는 JDK 9 에서 폐기됐고 이후 제거됐다. 최근 Trino 가 요구하는 JDK 에서는 -Xlog:gc*:file=/var/log/trino/gc.log:time,uptime:filecount=10,filesize=100M 형식을 쓴다/metrics 엔드포인트가 도입된 Trino 버전을 공식 릴리스 노트에서 확정하지 못했다. 현재 문서에는 기능 설명만 있고 도입 시점이 적혀 있지 않다. 낮은 버전을 쓰고 있다면 실제로 엔드포인트가 응답하는지 먼저 확인한다. (확인 필요)
config.properties · jvm.config 의 기본 항목./metrics 에도 그대로 적용되는 인증 설정.최신 버전 Trino 483 — 2026-09-20 확인. https://trino.io/docs/current/admin/openmetrics.html ↩︎