안녕하세요, devyu입니다.
오늘은 Kubernetes 환경에서 Datadog을 적용하는 방법을 살펴보겠습니다. 특히 AWS Elastic Kubernetes Service (EKS)에서 Datadog Agent를 배포하고, APM 및 로그 수집 기능을 활성화하는 과정에 대해 설명하겠습니다.
(하단 내용은 datadog 공식 문서의 내용을 기준으로 합니다. 공식 문서 )
Datadog Agent는 Kubernetes 클러스터의 모든 노드에서 실행되며, 클러스터 메트릭, 애플리케이션 로그, APM 데이터를 수집하여 Datadog UI에서 확인할 수 있도록 합니다.
Kubernetes 환경에서 Datadog을 배포하는 주요 방법은 다음과 같습니다.
Datadog Agent를 Kubernetes 클러스터에 배포하기 전에, Datadog API Key와 App 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
Helm을 사용하면 Datadog Agent를 간편하게 배포하고 관리할 수 있습니다.
helm repo add datadog https://helm.datadoghq.com
helm repo update
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: 기본 메트릭 수집 활성화
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
Helm을 사용하지 않는 경우, Kubernetes 매니페스트 파일을 이용하여 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
kubectl apply -f datadog-agent.yaml -n datadog
APM (Application Performance Monitoring)을 활성화하면 애플리케이션의 성능 데이터를 수집하여 Datadog UI에서 확인할 수 있습니다.
애플리케이션 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"



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
Datadog Agent를 통해 애플리케이션 로그를 수집하려면 다음 설정을 추가해야 합니다.
datadog-agent.yaml에서 로그 수집 활성화apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
name: datadog
spec:
features:
logCollection:
enabled: true
containerCollectAll: true
kubectl apply -f datadog-agent.yaml -n datadog
모든 설정이 완료되었다면 Datadog UI에서 데이터를 확인할 수 있습니다.
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 모니터링을 통해 애플리케이션 성능, 로그, 메트릭을 통합적으로 관리할 수 있으니, 도입을 시도해보시는 것을 추천합니다.