OpenTelemetry와 Prometheus
OpenTelemetry와 Prometheus (OpenTelemetry)
이 문서는 OpenTelemetry(OTel)와 Prometheus를 통합하는 방법을 설명해요. OpenTelemetry는 트레이스·메트릭·로그를 위한 벤더 중립적인 오픈 표준이에요. Prometheus 3.0부터는 OTLP(OpenTelemetry Protocol)로 메트릭을 직접 수신할 수 있고, Prometheus 엑스포터는 OTel 지표를 Prometheus 형식으로 변환해 노출할 수 있습니다.
Prometheus는 OpenTelemetry 메트릭을 네이티브로 스크레이프할 수 있는 익스포저(expoter)와, OTLP를 직접 받아들이는 remote write 수신 옵션을 제공해요. 이 문서는 그 연결 고리와 설정 방법을 정리합니다.
출처: 문서
본문
통합 방식
OpenTelemetry는 데이터 수집·처리를 위한 표준이며, Prometheus는 메트릭 저장·조회·알림을 담당합니다. 둘을 연결하는 주요 경로는 두 가지입니다:
- Prometheus가 OTel 메트릭을 스크레이프 — OpenTelemetry Collector가 Prometheus 익스포터를 사용해 OTel 지표를 Prometheus 형식 텍스트로 노출하고, Prometheus가 이를 스크레이프.
- Prometheus가 OTLP를 직접 수신 — Prometheus를 OTLP remote write 수신기로 구성해, OTel Collector(또는 SDK)가
/api/v1/otlp/v1/metrics로 메트릭을 전송.
OpenTelemetry Collector → Prometheus
OpenTelemetry Collector 구성에서 Prometheus 익스포터 익스포트:
exporters:
prometheus:
endpoint: "0.0.0.0:9090"
namespace: otelcol
service:
pipelines:
metrics:
receivers: [otlp]
processors: []
exporters: [prometheus]
이러면 Collector가 :9090에서 Prometheus 형식 메트릭을 노출하고, Prometheus가 그 주소를 스크레이프합니다.
Prometheus에서 OTLP 수신
Prometheus는 실험적으로 OTLP remote write를 지원합니다. Prometheus 설정에서 수신을 활성화하면, Collector가 Prometheus remote write 익스포터를 사용해 OTLP 메트릭을 보낼 수 있습니다:
# prometheus.yml (OTLP remote write 수신 활성화 예시)
이렇게 하면 OTel SDK/Collector가 수집한 메트릭이 Prometheus의 시계열로 저장되고, 기존 PromQL로 조회할 수 있습니다.
스크레이프 대상으로서의 OTel exporter
각 애플리케이션에서 OpenTelemetry SDK로 지표를 만들고 Collector의 Prometheus 익스포터를 통해 /metrics로 노출하면, Prometheus는 다른 엑스포터처럼 scrape_config로 스크레이프합니다.
단위·형식 주의
OTel의 단위/이름 규칙과 Prometheus의 단위 접미사 규칙이 다를 수 있으므로, 변환 시 메트릭 이름과 단위(_seconds, _bytes 등)를 확인하세요.
더 알아보기 (Learn more)
- OpenTelemetry 문서 — 표준과 Collector 가이드
- Prometheus OTLP 통합 — OTLP 수신 기능 플래그
- OpenMetrics 마이그레이션 가이드 — 단위 접미사 규칙
- remote write 수신 — OTLP remote write 설정