STK-OBS-05 backend OTel Java agent 계측
작업 내용
backend(Spring, :8080)를 OTel Java agent로 자동계측한다(ADR-004). 코드 변경 없이 실행 시 -javaagent와 OTEL_* 환경변수만 주입한다.
- 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면 계측이 완전히 비활성화되고 앱 동작은 동일하다.