[모니터링 시스템] Datadog 사용 가이드(Google Cloud Platform)
안녕하세요 😉
유유자적한 개발자 유로띠 입니다 😀
👏👏👏👏
이번 포스팅에서는
✅ Datadog 이란?
✅ 백엔드에서 연동하는법
에 대해서 알아보겠습니다
Datadog(데이터독) 이란?
SaaS 기반 데이터 분석 플랫폼을 통해 서버, 데이터베이스, 도구 및 서비스에 대한 모니터링을 제공하는 클라우드 규모 애플리케이션용 모니터링 서비스입니다
✅ Datadog의 로고
로고에 있는 개 이름은 Bits입니다.
✅ Datadog 기능
📍Integrations (통합)
공식 지원 대상이 600개 정도 존재하며, Integrations(통합)을 이용하여 인프라스트럭처에서 모든 메트릭과 로그를 수집하여 통합형 시스템을 전체적으로 파악할 수 있습니다
3개의 통합 유형이 존재합니다.
Agent 기반 : Datadog Agent와 함께 설치되며, check라고 하는 파이썬 클래스 메소드를 사용하여 수집
인증 기반 : Datadog에서 설정하며, 이때 API를 사용하여 메트릭을 가져오기 위한 자격 정보를 지정
라이브러리 기반 : Datadog API를 사용하여 애플리케이션 개발에 쓰인 언어로 애플리케이션을 모니터링
📍log Management (로그관리)
애플리케이션과 인프라스트럭처를 통해 생성된 모든 로그를 전송하고 처리할 수 있습니다. 인덱스를 생성하지 않고 라이브 테일(Live Tail)을 사용하여 실시간으로 로그를 관찰할 수 있습니다
📍APM (Application Performance Monitoring: 애플리케이션 성능 모니터링) or tracing (트레이싱)
Datadog의 APM을 이용하면 로그 및 인프라스트럭처의 모니터링과 함께, 요청량 및 지연 시간 등 주요 메트릭을 모니터링하기 위해 자동으로 생성된 대시보드부터 개별 요청의 상세한 트레이스에 이르기까지 애플리케이션 성능에 대한 심층적인 인사이트를 제공합니다
📍 Monitors (모니터링)
모니터는 메트릭 기준치, 통합 가용성, 네트워크 엔드포인트 등에 따라 경고와 알림을 표시합니다.
📍 RUM (Real User Monitoring)
개별 사용자의 실시간 활동과 경험을 시각화하고 분석할 수 있습니다.
백엔드에서 연동하는 법
사내에서 로그 수집 및 모니터링을 위해 데이터독을 도입하게 되었습니다.
저희 팀도 서비스를 데이터독과 연동하는 기회가 주어졌습니다.
✅ 전제 조건
Datadog API 키가 필요합니다.
✅ 에이전트 설치(feat: Dockerfile)
Dockerfile에 다음을 추가하여 Datadog 에이전트를 사용해 애플리케이션을 계측할 수 있습니다.
트레이싱 라이브러리 구성
아래의 3가지 태그를 구성해야 합니다.
DD_ENV : Datadog Agent에 구성된 환경
DD_SERVICE : 애플리케이션에 사용되는 서비스 이름입니다.
DD_VERSION : 애플리케이션 버전 번호 필드입니다.
# optionally add Datadog tags
ENV DD_SERVICE=datadog-service
ENV DD_ENV=production
ENV DD_VERSION=1
# copy the Datadog `serverless-init` into your Docker image
COPY --from=datadog/serverless-init:latest-alpine /datadog-init /app/datadog-init
COPY --from=datadog/dd-lib-js-init /operator-build/node_modules /dd_tracer/node/
# install the Datadog js tracing library, either here or in package.json
RUN npm install dd-trace
# enable the Datadog tracing library
ENV NODE_OPTIONS="--require dd-trace/init"
# change the entrypoint to wrap your application into the Datadog serverless-init process
ENTRYPOINT ["/app/datadog-init"]
✅ 애플리케이션 설정
저희는 GCP(Google Cloud Platform)에서 제공하는 Cloud Run을 사용하고 있습니다.
DD_API_KEY : Datadog API 키로 Datadog 계정에 데이터를 전송하는 데 사용됩니다.
DD_SITE : Datadog 엔드포인트와 웹사이트입니다. (datadoghq.eu)
DD_TRACE_ENABLED : 트레이싱 활성화를 위해 true로 설정합니다.
DD_LOGS_ENABLED : 로그(stdout 및 stderr)를 Datadog에 전송합니다.
cloud run deploy에 datadog을 사용하기 위한 옵션을 설정합니다.
gcloud run deploy RUN_SERVICE \
--update-env-vars=DD_API_KEY=$DD_API_KEY \
--update-env-vars=DD_TRACE_ENABLED=true \
--update-env-vars=DD_LOGS_ENABLED=true \
--update-env-vars=DD_SITE='datadoghq.eu'
✅ 결과
구축이 완료되면 메트릭과 트레이스는 Datadog으로 전송됩니다.
Serverless
인프라스트럭처 → 서버리스 메뉴에서 메트릭과 트레이스를 확인할 수 있습니다.
APM
사용되는 서비스가 자동으로 Datadog에 전송되고 APM에서 확인할 수 있습니다.
저희 같은 경우 api, redis, mysql, mongodb가 자동으로 전송되어 해당 서비스를 확인할 수 있었습니다.