🔧
DevOps
Datadog
클라우드 모니터링 및 보안 플랫폼
클라우드 모니터링 및 보안 플랫폼
Datadog은 클라우드 규모의 인프라, 애플리케이션, 로그를 통합 모니터링하는 SaaS 플랫폼입니다. 2010년에 설립되어 현재 가장 많이 사용되는 상용 모니터링 솔루션 중 하나로, 관측 가능성(Observability)의 세 기둥인 메트릭, 로그, 트레이스를 하나의 플랫폼에서 제공합니다.
# /etc/datadog-agent/datadog.yaml
api_key: "your-api-key-here"
site: "datadoghq.com" # EU는 datadoghq.eu
# 호스트 태그 설정
tags:
- env:production
- service:api-server
- team:platform
# APM 설정
apm_config:
enabled: true
apm_dd_url: https://trace.agent.datadoghq.com
# 로그 수집 활성화
logs_enabled: true
logs_config:
container_collect_all: true
processing_rules:
- type: exclude_at_match
name: exclude_healthchecks
pattern: "GET /health"
# 프로세스 모니터링
process_config:
enabled: true
container_collection:
enabled: true
# DogStatsD 설정
dogstatsd_port: 8125
dogstatsd_non_local_traffic: true
# datadog-values.yaml - Helm Chart 설정
datadog:
apiKey: ${DD_API_KEY}
appKey: ${DD_APP_KEY}
site: datadoghq.com
# 클러스터 이름
clusterName: production-k8s
# 태그
tags:
- env:production
- region:ap-northeast-2
# APM 활성화
apm:
portEnabled: true
socketEnabled: true
# 로그 수집
logs:
enabled: true
containerCollectAll: true
# 프로세스 모니터링
processAgent:
enabled: true
processCollection: true
# 클러스터 에이전트
clusterAgent:
enabled: true
metricsProvider:
enabled: true # HPA 연동
# Node Agent
agents:
rbac:
create: true
containers:
agent:
resources:
requests:
memory: "256Mi"
cpu: "200m"
# Flask 애플리케이션 APM 연동
from ddtrace import tracer, patch_all
# 자동 패치
patch_all()
# 커스텀 설정
tracer.configure(
hostname='localhost',
port=8126,
service='my-flask-app',
env='production',
)
from flask import Flask
from datadog import statsd
app = Flask(__name__)
@app.route('/api/users/')
def get_user(user_id):
# 커스텀 스팬 추가
with tracer.trace('database.query', service='postgresql') as span:
span.set_tag('user.id', user_id)
user = fetch_user_from_db(user_id)
# 커스텀 메트릭 전송
statsd.increment('api.users.get', tags=['endpoint:get_user'])
return jsonify(user)
# DogStatsD 커스텀 메트릭
from datadog import initialize, statsd
initialize(statsd_host='localhost', statsd_port=8125)
# 카운터
statsd.increment('page.views', tags=['page:home'])
# 게이지
statsd.gauge('queue.size', queue.size(), tags=['queue:orders'])
# 히스토그램
statsd.histogram('request.latency', response_time, tags=['endpoint:api'])
Datadog은 호스트 수, 로그 볼륨, 커스텀 메트릭 수에 따라 비용이 발생합니다. 로그 인덱싱 정책과 메트릭 카디널리티를 주의깊게 관리하세요.
API 키가 노출되면 악의적인 데이터 전송이나 과금 문제가 발생할 수 있습니다. Secrets Manager를 통해 안전하게 관리하세요.
Datadog Agent는 일정량의 CPU/메모리를 사용합니다. 리소스가 제한된 환경에서는 Agent 설정을 최적화하세요.
태그에 고유 ID(사용자 ID, 세션 ID)를 직접 사용하면 메트릭 카디널리티가 폭발적으로 증가합니다. 적절한 버킷팅을 사용하세요.