OpenTelemetry로 관측

OpenTelemetry로 관측 (Observability with OpenTelemetry)

Trino는 널리 쓰이는 OpenTelemetry API·SDK·도구 모음을 이용해 실행 중인 Trino 배포의 트레이싱 정보를 노출해요.

출처: 문서

본문

OpenTelemetry를 사용해 메트릭, 로그, 트레이스 같은 텔레메트리 데이터를 계측(instrument)·생성·수집·내보낼 수 있고, 이를 통해 애플리케이션 성능과 동작을 분석할 수 있어요. 관측성과 관련 개념에 대한 자세한 내용은 OpenTelemetry 문서에서 확인할 수 있어요.

OpenTelemetry와 Trino의 통합 덕분에 Trino의 동작과 성능을 트레이싱할 수 있어요. 전체 애플리케이션을 진단할 수도 있고, 특정 쿼리의 처리나 더 좁은 측면을 진단하는 데도 쓸 수 있어요.

Trino는 코디네이터와 워커에서 트레이스 정보를 내보내요. 트레이스 정보에는 쿼리 플래너·옵티마이저 같은 핵심 시스템과 다양한 커넥터·플러그인이 포함돼요.

Trino는 클라이언트 도구가 제공한 트레이스 식별자를 클러스터 전체에서 사용해요. 제공된 트레이스 식별자가 없으면 쿼리마다 식별자를 새로 만들어요. 이 식별자는 데이터 소스, 메타스토어, 그 외 연결된 컴포넌트로 전파돼요. 따라서 분산 트레이싱 정보를 이용해 클라이언트 도구에서 코디네이터·모든 워커를 거쳐 데이터 소스와 기타 통합까지 이어지는 쿼리의 전체 처리 흐름을 따라갈 수 있어요.

데이터 소스나 다른 통합에서도 트레이스를 받고 싶다면, 그 도구도 OpenTelemetry 트레이싱을 지원하고 Trino가 제공한 식별자를 이용해 컨텍스트를 전파해야 해요. 트레이싱은 그 도구들에서 별도로 활성화해야 합니다.

설정 (Configuration)

OpenTelemetry로 트레이싱을 사용하려면 config.properties 파일에서 활성화하고 엔드포인트를 설정해요:

tracing.enabled=true
otel.exporter.endpoint=http://observe.example.com:4317

샘플링 비율도 제어할 수 있어요. 예를 들어 전체 트레이스의 10%만 수집하고 싶다면:

tracing.enabled=true
otel.exporter.endpoint=http://observe.example.com:4317
otel.tracing.sampling-ratio=0.1

Jaeger를 이용한 예시

도커 네트워크를 만들고 Jaeger 컨테이너를 실행(OTLP 수집 활성화)해 볼게요:

docker network create platform
docker run -d \
  --name jaeger \
  --network=platform \
  --network-alias=jaeger \
  -e COLLECTOR_OTLP_ENABLED=true \
  -p 16686:16686 \
  -p 4317:4317 \
  jaegertracing/all-in-one:latest

Trino config.properties에서 트레이싱을 활성화하고 Jaeger 엔드포인트를 지정해요:

node-scheduler.include-coordinator=true
http-server.http.port=8080
discovery.uri=http://localhost:8080
tracing.enabled=true
otel.exporter.endpoint=http://jaeger:4317

Trino 컨테이너를 실행해요:

docker run -d \
  --name trino \
  --network=platform \
  -p 8080:8080 \
  --mount type=bind,source=$PWD/config.properties,target=/etc/trino/config.properties \
  trinodb/trino:latest

정리할 때는 컨테이너를 순서대로 멈추고 제거하면 돼요:

docker stop trino
docker stop jaeger
docker start jaeger
docker start trino
docker rm trino
docker rm jaeger
docker network rm platform

더 알아보기 (Learn more)

다른 관측 방법이 궁금하다면 JMX로 모니터링 문서를 이어서 읽어 보세요.