OpenTelemetry는 Traces, Metrics, Logs 세 가지 핵심 신호를 통해 애플리케이션 관측성을 확보합니다.
1. OpenTelemetry Traces
SDK와 OTLP Exporter를 설정하고, opentelemetry-instrumentation-all
Gem으로 Rails 계측을 자동 설치합니다(Monkey Patching, Pub/Sub, Native 방식). 커스텀 스팬과 속성을 추가하여 트레이스를 풍부하게 하며, 백엔드에서 요청 흐름과 에러를 진단합니다.
2. OpenTelemetry Metrics (실험 단계)
Metrics SDK와 OTLP Exporter Gem을 추가합니다. 미터를 통해 카운터, 히스토그램 등 인스트루먼트를 정의하고 차원(Dimensions) 포함 메트릭을 수집합니다. OTEL_METRICS_EXPORT_INTERVAL
설정 및 meter_provider.add_view
로 커스텀 버킷 경계를 정의합니다. ActiveSupport::Notifications.subscribe
를 활용, process_action
이벤트에 히스토그램을 연결하여 요청 처리 시간을 기록합니다.
3. OpenTelemetry Logs
Logs SDK와 OTLP Exporter Gem을 추가하고 OTEL_LOGS_EXPORTER
환경 변수로 OTLP 전송을 설정합니다. Ruby Logger Instrumentation은 Ruby 기본 로거를 계측하여 Rails 8 ActiveSupport::BroadcastLogger
포함 모든 로그를 OpenTelemetry 형식으로 자동 변환 전송합니다. 로그는 Trace ID와 Span ID를 포함하여 트레이스 및 스팬 이벤트와의 상관 관계를 쉽게 파악할 수 있습니다.
4. 프로젝트 현황 및 참여
Ruby OpenTelemetry 프로젝트는 메트릭/로그 안정성 확보, 시맨틱 컨벤션 적용, 계측에 메트릭 자동 추가 등을 목표로 합니다. GitHub 리포지토리, Ruby SIG 미팅, CNCF Slack 채널을 통해 커뮤니티 참여를 독려합니다.