STK-OBS-05 backend OTel Java agent 계측

작업 내용

backend(Spring, :8080)를 OTel Java agent로 자동계측한다(ADR-004). 코드 변경 없이 실행 시 -javaagentOTEL_* 환경변수만 주입한다.

  • agent jar를 이미지/실행에 포함, OTEL_EXPORTER_OTLP_ENDPOINT를 STK-OBS-04 Collector로 지정.
  • OTEL_SERVICE_NAME=backend, W3C tracecontext propagator 설정.
  • 자동 수집 대상: Spring MVC(HTTP server), RestClient/외부 호출(HTTP client), HikariCP(DB 커넥션 풀), JDBC, JVM·GC 메트릭.
  • Toss API 외부 호출 span에 trace가 이어지는지 확인.

롤백: OTEL_SDK_DISABLED=true 또는 -javaagent 제거. 코드 무변경이라 즉시 OFF.

다이어그램

처리 흐름

sequenceDiagram
    participant Client
    participant BE as backend(agent)
    participant DB as MySQL
    participant COL as Collector
    Client->>BE: HTTP (traceparent)
    BE->>DB: JDBC (span 자동 생성)
    BE-->>Client: response
    BE->>COL: OTLP span + JVM metric

클래스/계측 의존

flowchart LR
    AGENT["OTel Java agent"]
    MVC["Spring MVC"]
    JDBC["JDBC/HikariCP"]
    JVM["JVM/GC"]
    AGENT --> MVC
    AGENT --> JDBC
    AGENT --> JVM
    AGENT --> COL["→ Collector"]

테스트 케이스

  • backend HTTP 요청 1건이 trace로 생성되고 Collector를 거쳐 양 스택에 표시된다.
  • JDBC 쿼리가 자식 span으로, HikariCP·JVM 메트릭이 함께 수집된다.
  • 외부 Toss API 호출 span이 같은 trace에 client span으로 연결된다.
  • Collector 미기동 상태에서도 backend API는 정상 응답한다(계측 실패 격리).
  • OTEL_SDK_DISABLED=true면 계측이 완전히 비활성화되고 앱 동작은 동일하다.