피드로 돌아가기
올리브영 테크블로그DevOps
원문 읽기
Datadog - "저는 모니터링 요정입니다. ✋🏻"
올리브영이 ECS Fargate에서 Datadog Agent Container와 JVM Tracing Agent를 연동해 Application 로그·상태·API 응답속도를 통합 모니터링
AI 요약
Context
올리브영 온라인몰의 모니터링 환경이 Jennifer, Maxguage 등 여러 도구로 산재되어 있었고 일부 영역은 모니터링 인프라가 부재했다. Mini Service를 AWS ECS Fargate로 운영하면서 서비스 헬스 체크, 오류 로그 추적, API 응답 속도를 일관되게 관찰할 필요가 생겼다.
Technical Solution
- ECS Task 정의에 Datadog Agent Container 추가: 공식 이미지
public.ecr.aws/datadog/agent:latest사용, 포트 8125/8126 설정 - Datadog Agent 환경변수 구성: DD_ENV(개발/운영 환경), DD_SERVICE(애플리케이션명), DD_PROFILING_ENABLED(Continuous Profiler), DD_LOG_INJECTION(MDC 키 주입) 설정
- Spring Boot 애플리케이션 진입점 수정: JVM 인자에
-javaagent:/usr/agent/dd-java-agent.jar,-Ddd.agent.host=localhost,-Ddd.profiling.enabled=true,-XX:FlightRecorderOptions=stackdepth=256,-Ddd.logs.injection=true추가 - ECS awsvpc 네트워크 모드 활용: 각 Task에 ENI(Elastic Network Interface) 할당, 동일 Task 내 컨테이너는 localhost로 Agent 접속
- React 애플리케이션의 경우: dd-trace 라이브러리의 tracer 초기화를 애플리케이션 진입점에 배치
Impact
아티클에 정량적 수치 없음
Key Takeaway
ECS Fargate 환경에서 Application-level 메트릭을 수집하려면 별도의 Datadog Agent Container와 JVM Tracing Agent를 모두 구성해야 하며, awsvpc 모드에서는 같은 Task 내 컨테이너 통신이 localhost로 단순화된다.
실천 포인트
AWS ECS Fargate에서 Spring Boot 애플리케이션을 운영하는 팀은 Dockerfile ENTRYPOINT에 Datadog Java Agent를 JVM 인자로 주입하고, ECS Task 정의에 Datadog Agent Container를 추가하며, dd.agent.host을 localhost로 설정하면 Application 메트릭과 로그를 Datadog 대시보드에서 통합 조회할 수 있다.