1. 개요
OpenTelemetry는 CNCF(Cloud Native Computing Foundation)에서 주도하는 관측성(Observability) 표준 프레임워크입니다.
기존 APM은 벤더 종속적이고 라이선스 비용이 크지만, OpenTelemetry는
다음 세 가지를 통합하여 개방형 구조를 제공합니다:
• Tracing: 요청 추적 (분산 추적)
• Metrics: 시스템 및 애플리케이션 지표
• Logs: 로그 수집 및 상관관계 분석
Spring Boot와 WebLogic 모두 OpenTelemetry Java Agent 기반으로 연동 가능합니다.
⸻
2. 전체 아키텍처
graph TD
A[Spring Boot on WebLogic] --> B[OpenTelemetry Java Agent]
B --> C[OpenTelemetry Collector]
C --> D[Jaeger / Zipkin (Tracing)]
C --> E[Prometheus / Grafana (Metrics)]
C --> F[Elastic / Loki (Logs)]
⸻
3. Java Agent 방식 적용 (WebLogic 포함)
startWebLogic.sh 또는 setDomainEnv.sh에 다음과 같이 Agent 등록:
export JAVA_TOOL_OPTIONS="-javaagent:/opt/opentelemetry-javaagent.jar \
-Dotel.service.name=spring-on-weblogic \
-Dotel.traces.exporter=otlp \
-Dotel.exporter.otlp.endpoint=http://otel-collector:4317 \
-Dotel.metrics.exporter=none"
필요 시 otel.metrics.exporter=prometheus 또는 logging, none 등으로 설정 변경 가능
⸻
4. OpenTelemetry Collector 구성 예시
receivers:
otlp:
protocols:
grpc:
http:
exporters:
jaeger:
endpoint: "jaeger:14250"
tls:
insecure: true
prometheus:
endpoint: "0.0.0.0:8889"
service:
pipelines:
traces:
receivers: [otlp]
exporters: [jaeger]
metrics:
receivers: [otlp]
exporters: [prometheus]
⸻
5. Jaeger 기반 분산 추적 예시
• WebLogic → Spring Service → 외부 REST API → DB 호출까지 TraceId 기반 전파 가능
• 호출간 응답 시간, 오류, Retry 등 이벤트 단위로 시각화
• Span 별로 사용자 정의 메타데이터(tag, baggage) 삽입 가능
예시 화면:
• Service Map: 호출 체계 트리
• Trace Timeline: 각 처리 단계별 소요 시간 시각화
• Error Root Cause: 오류 발생 지점 추적
⸻
6. Spring Boot 통합 고급 구성
management:
tracing:
sampling:
probability: 1.0
enabled: true
otlp:
tracing:
endpoint: http://otel-collector:4318/v1/traces
dependencies {
implementation 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure'
implementation 'io.opentelemetry:opentelemetry-exporter-otlp'
}
Micrometer 기반 Prometheus 연동도 OpenTelemetry로 수집 가능 (통합 Exporter 사용)
⸻
7. WebLogic 호환성 주의사항
항목 조치
JDK 8 이상 Java Agent 호환 필수 (JDK 11+ 권장)
Start Script 구조 setDomainEnv.sh에 JAVA_TOOL_OPTIONS 삽입 필요
Spring Boot가 EAR 안에 있는 경우 ClassLoader 경계 주의 (ParentLast 설정 등)
WebLogic 클러스터 모든 노드에 동일 Agent, TraceContext 유지 필요
⸻
8. 고급 확장 전략
확장 영역 설명
Tempo 연동 Grafana Tempo 사용 시 Jaeger보다 경량화 추적 가능
Trace → Metric 연계 고지연 span 자동 추출 → SLA 지표로 전환
Trace 기반 샘플링 오류/고지연만 수집하여 저장 효율 최적화
로그 상관관계 TraceId 기반으로 로그/메트릭/트레이스 연결 가능 (Grafana, Elastic 통합 대시보드 구성)
⸻
✅ 결론
OpenTelemetry를 도입하면, WebLogic + Spring Boot 혼합 환경에서도 완전한 분산 추적 체계를 구축할 수 있으며
라이선스 비용 없이 벤더 중립적인 APM 체계를 구성할 수 있습니다.
이는 특히 다음과 같은 상황에 유리합니다:
• 자체 운영 인프라에 Prometheus, Grafana, Jaeger 등 구축 가능한 경우
• 고비용 APM 도구(Datadog, Dynatrace 등)를 대체하려는 경우
• 마이크로서비스 간 호출 체인에서 병목/지연/오류 추적이 중요한 경우
카테고리 없음