Growth Hacking

[모니터링 시스템] Datadog 사용 가이드(Google Cloud Platform)

유로띠 2023. 10. 26. 00:55
반응형

안녕하세요 😉

유유자적한 개발자 유로띠 입니다 😀

 

 

 

👏👏👏👏

 

 

 

 

 

이번 포스팅에서는

✅ 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가 자동으로 전송되어 해당 서비스를 확인할 수 있었습니다.

 

 

 

 

 

반응형