Kubernetes 환경에서 Datadog agent 적용하기

devyu·2024년 11월 23일
post-thumbnail

안녕하세요, devyu입니다.

오늘은 Kubernetes 환경에서 Datadog을 적용하는 방법을 살펴보겠습니다. 특히 AWS Elastic Kubernetes Service (EKS)에서 Datadog Agent를 배포하고, APM 및 로그 수집 기능을 활성화하는 과정에 대해 설명하겠습니다.
(하단 내용은 datadog 공식 문서의 내용을 기준으로 합니다. 공식 문서 )

Kubernetes에서 Datadog 적용 개요

Datadog Agent는 Kubernetes 클러스터의 모든 노드에서 실행되며, 클러스터 메트릭, 애플리케이션 로그, APM 데이터를 수집하여 Datadog UI에서 확인할 수 있도록 합니다.

Kubernetes 환경에서 Datadog을 배포하는 주요 방법은 다음과 같습니다.

  • Helm을 사용한 설치 (권장)
  • kubectl을 통한 수동 배포

1. Datadog API 및 앱 키 생성

Datadog Agent를 Kubernetes 클러스터에 배포하기 전에, Datadog API KeyApp Key를 생성해야 합니다. 이는 Datadog과의 통합을 위한 인증 정보로 사용됩니다.

다음 명령어로 Kubernetes Secret을 생성합니다:

kubectl create secret generic datadog-secret \
  --from-literal api-key=<YOUR_API_KEY> \
  --from-literal app-key=<YOUR_APP_KEY> \
  -n datadog

2. Helm을 이용한 Datadog Agent 배포

Helm을 사용하면 Datadog Agent를 간편하게 배포하고 관리할 수 있습니다.

2.1 Helm 차트 저장소 추가 및 업데이트

helm repo add datadog https://helm.datadoghq.com
helm repo update

2.2 Helm을 사용하여 Datadog Agent 설치

helm install datadog-agent datadog/datadog \
  --namespace datadog \
  --set datadog.apiKey=<YOUR_API_KEY> \
  --set datadog.logs.enabled=true \
  --set datadog.apm.enabled=true \
  --set datadog.processAgent.enabled=true \
  --set datadog.metrics.enabled=true

설명은 다음과 같습니다.

  • datadog.logs.enabled: 컨테이너 로그 수집 활성화
  • datadog.apm.enabled: 애플리케이션 APM 모니터링 활성화
  • datadog.processAgent.enabled: 프로세스 모니터링 활성화
  • datadog.metrics.enabled: 기본 메트릭 수집 활성화

2.3 설치 확인

kubectl get pods -n datadog

Datadog Agent가 정상적으로 실행 중이라면 다음과 같은 상태가 표시됩니다:

NAME                    READY   STATUS    RESTARTS   AGE
datadog-agent-xyz12     1/1     Running   0          1m
datadog-agent-abc34     1/1     Running   0          1m

3. Datadog Agent를 수동으로 배포하는 방법

Helm을 사용하지 않는 경우, Kubernetes 매니페스트 파일을 이용하여 Datadog Agent를 배포할 수도 있습니다.

3.1 Datadog Agent 매니페스트 작성 (datadog-agent.yaml)

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    site: datadoghq.com
    credentials:
      apiSecret:
        secretName: datadog-secret
        keyName: api-key
      appSecret:
        secretName: datadog-secret
        keyName: app-key
  override:
    clusterAgent:
      image:
        name: gcr.io/datadoghq/cluster-agent:latest
    nodeAgent:
      image:
        name: gcr.io/datadoghq/agent:latest

3.2 매니페스트 적용

kubectl apply -f datadog-agent.yaml -n datadog

4. 애플리케이션 APM 설정

APM (Application Performance Monitoring)을 활성화하면 애플리케이션의 성능 데이터를 수집하여 Datadog UI에서 확인할 수 있습니다.

4.1 Kubernetes 애플리케이션에 환경 변수 추가

애플리케이션 Deployment 설정에서 Datadog APM 관련 환경 변수를 추가해야 합니다.

env:
  - name: DD_AGENT_HOST
    value: "datadog-agent"
  - name: DD_SERVICE
    value: "my-app"
  - name: DD_ENV
    value: "production"
  - name: DD_VERSION
    value: "1.0"

4.2 Spring Boot 애플리케이션의 실행 명령

java -javaagent:/path/to/dd-java-agent.jar \
  -Ddd.service=my-app \
  -Ddd.env=production \
  -Ddd.version=1.0 \
  -Ddd.agent.host=datadog-agent \
  -jar my-app.jar

5. 로그 수집 설정

Datadog Agent를 통해 애플리케이션 로그를 수집하려면 다음 설정을 추가해야 합니다.

5.1 datadog-agent.yaml에서 로그 수집 활성화

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  features:
    logCollection:
      enabled: true
      containerCollectAll: true

5.2 매니페스트 적용

kubectl apply -f datadog-agent.yaml -n datadog

6. Datadog 대시보드에서 확인

모든 설정이 완료되었다면 Datadog UI에서 데이터를 확인할 수 있습니다.

  • APM > Services: my-app이 정상적으로 수집되는지 확인
  • Infrastructure > Hosts: EKS 노드의 상태 및 메트릭 모니터링
  • Logs: 애플리케이션 로그가 정상적으로 수집되는지 확인

7. Datadog Agent 업그레이드

Datadog Helm 차트를 최신 버전으로 업그레이드하려면 다음 명령어를 통해 실행할 수 있습니다.

helm upgrade datadog-agent datadog/datadog \
  --namespace datadog \
  --set datadog.apiKey=<YOUR_API_KEY> \
  --set datadog.logs.enabled=true \
  --set datadog.apm.enabled=true \
  --set datadog.processAgent.enabled=true \
  --set datadog.metrics.enabled=true

마무리

이번 글에서는 EKS에서 Datadog을 설치하고, APM 및 로그 수집 기능을 활성화하는 방법을 정리했습니다. Helm을 활용하면 손쉽게 배포 및 관리를 할 수 있으며, 필요에 따라 매니페스트 파일을 직접 적용하여 세부 설정을 조정할 수도 있습니다.

Datadog을 활용한 Kubernetes 모니터링을 통해 애플리케이션 성능, 로그, 메트릭을 통합적으로 관리할 수 있으니, 도입을 시도해보시는 것을 추천합니다.

profile
티스토리와 벨로그 사이 줄타기....

0개의 댓글