본문 바로가기
카테고리 없음

✅ WebLogic + Spring Boot 환경에서 OpenTelemetry 기반 분산 추적 체계 구축

by frontier12 2025. 5. 30.

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 등)를 대체하려는 경우
• 마이크로서비스 간 호출 체인에서 병목/지연/오류 추적이 중요한 경우