Admission Controller를 활성화한 상태로 Datadog Cluster Agent를 배포한 경우, Admission Controller가 포드 매니페스트를 변형하고 필수 환경 변수를 모두 주입합니다(구성된 변형 조건을 따름). 이 경우, 포드 매니페스트의 DD_ 환경 변수를 수동으로 구성할 필요가 없습니다. 자세한 내용은 Admission Controller 설명서를 참조하세요.
전체 구성
Kubernetes를 사용할 때 unified service tagging 전체 범위를 이용하려면 배포 개체 수준 및 포드 템플릿 사양 수준 둘 모두에 환경 변수를 추가하세요.
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
tags.datadoghq.com/env: "<ENV>"
tags.datadoghq.com/service: "<SERVICE>"
tags.datadoghq.com/version: "<VERSION>"
...
template:
metadata:
labels:
tags.datadoghq.com/env: "<ENV>"
tags.datadoghq.com/service: "<SERVICE>"
tags.datadoghq.com/version: "<VERSION>"
containers:
- ...
env:
- name: DD_ENV
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/env']
- name: DD_SERVICE
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/service']
- name: DD_VERSION
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/version']
OpenTelemetry Resource Attributes 환경 변수를 사용하여 env, service, version 태그를 설정할 수도 있습니다.
containers:
- ...
env:
- name: OTEL_RESOURCE_ATTRIBUTES
value: "service.name=<SERVICE>,service.version=<VERSION>,deployment.environment=<ENV>"
- name: OTEL_SERVICE_NAME
value: "<SERVICE>"
OTEL_SERVICE_NAME 환경 변수는 service.name 환경 변수의 OTEL_RESOURCE_ATTRIBUTES 속성보다 우선합니다.
부분 구성
포드 수준 메트릭
포드 수준 메트릭을 구성하려면 다음 표준 레이블(tags.datadoghq.com)을 Deployment, StatefulSet 또는 Job의 포드 사양에 추가합니다.
template:
metadata:
labels:
tags.datadoghq.com/env: "<ENV>"
tags.datadoghq.com/service: "<SERVICE>"
tags.datadoghq.com/version: "<VERSION>"
이러한 레이블은 포드 수준 Kubernetes CPU, 메모리, 네트워크 및 디스크 메트릭에 적용되며 Kubernete의 downward API를 통해 DD_ENV, DD_SERVICE, DD_VERSION을 서비스의 컨테이너에 주입하는 데 사용할 수 있습니다.
포드당 컨테이너가 여러 개인 경우, 컨테이너별로 표준 레이블을 지정할 수 있습니다.
tags.datadoghq.com/<container-name>.env
tags.datadoghq.com/<container-name>.service
tags.datadoghq.com/<container-name>.version
상태 메트릭
Kubernetes 상태 메트릭을 구성하는 방법:
구성 파일에서 join_standard_tags를 true로 설정합니다. 설정 위치는 이 구성 파일 예시를 참조하세요.
동일한 표준 레이블을 상위 리소스의 레이블 컬렉션에 추가합니다(예: Deployment).
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
tags.datadoghq.com/env: "<ENV>"
tags.datadoghq.com/service: "<SERVICE>"
tags.datadoghq.com/version: "<VERSION>"
spec:
template:
metadata:
labels:
tags.datadoghq.com/env: "<ENV>"
tags.datadoghq.com/service: "<SERVICE>"
tags.datadoghq.com/version: "<VERSION>"
Datadog SDK 및 StatsD 클라이언트
Datadog SDK 및 StatsD client 환경 변수를 구성하려면 Kubernetes의 downward API를 아래의 형식으로 사용하세요.
containers:
- ...
env:
- name: DD_ENV
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/env']
- name: DD_SERVICE
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/service']
- name: DD_VERSION
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/version']
컨테이너화된 환경에서 APM 데이터 자동 버전 태깅
APM에서 version 태그를 사용하여 배포를 모니터링하고 잘못된 배포 자동 탐지를 사용해 오류 코드 배포를 식별할 수 있습니다.
APM 데이터의 경우, Datadog은 version 태그를 다음과 같은 우선순위 순서로 설정합니다. version을 수동으로 설정하면 Datadog이 사용자의 version 값을 재정의하지 않습니다.
| 우선순위 | 버전 값 |
|---|
| 1 | {your version value} |
| 2 | {image_tag}_{first_7_digits_of_git_commit_sha} |
| 3 | {image_tag} 또는 {first_7_digits_of_git_commit_sha}(하나만 사용 가능한 경우) |
요구 사항:
- Datadog Agent 버전 7.52.0 이상
- 서비스가 컨테이너화된 환경에서 실행되고
image_tag만으로 새 버전 배포를 추적하는 데 충분하면 추가적인 구성이 필요하지 않습니다. - 서비스가 컨테이너화된 환경에서 실행되지 않거나, Git SHA도 포함하고자 하는 경우 빌드 아티팩트에 Git 정보를 임베드하세요.
전체 구성
unified service tagging 전체 범위를 이용하려면 DD_ENV, DD_SERVICE, DD_VERSION 환경 변수 및 해당하는 Docker 레이블을 컨테이너에 맞게 설정하세요.
service 및 version의 값을 Dockerfile에 제공할 수 있습니다.
ENV DD_SERVICE <SERVICE>
ENV DD_VERSION <VERSION>
LABEL com.datadoghq.tags.service="<SERVICE>"
LABEL com.datadoghq.tags.version="<VERSION>"
env는 배포 시점에 결정될 가능성이 크기 때문에, 환경 변수와 레이블은 나중에 주입할 수 있습니다.
docker run -e DD_ENV=<ENV> -l com.datadoghq.tags.env=<ENV> ...
배포 시 모든 설정을 완료하는 편을 선호할 수도 있습니다.
docker run -e DD_ENV="<ENV>" \
-e DD_SERVICE="<SERVICE>" \
-e DD_VERSION="<VERSION>" \
-l com.datadoghq.tags.env="<ENV>" \
-l com.datadoghq.tags.service="<SERVICE>" \
-l com.datadoghq.tags.version="<VERSION>" \
...
부분 구성
서비스에 Datadog 환경 변수가 필요하지 않은 경우(예를 들어 Redis, PostgreSQL, NGINX와 같은 타사 소프트웨어 및 APM이 추적하지 않는 애플리케이션) Docker 레이블을 사용하면 됩니다.
com.datadoghq.tags.env
com.datadoghq.tags.service
com.datadoghq.tags.version
전체 구성에서 설명한 것과 같이, 이러한 레이블은 Dockerfile에 설정할 수도 있고 컨테이너 실행을 위해 인수로 설정할 수도 있습니다.
컨테이너화된 환경에서 APM 데이터 자동 버전 태깅
APM에서 version 태그를 사용하여 배포를 모니터링하고 잘못된 배포 자동 탐지를 사용해 오류 코드 배포를 식별할 수 있습니다.
APM 데이터의 경우, Datadog은 version 태그를 다음과 같은 우선순위 순서로 설정합니다. version을 수동으로 설정하면 Datadog이 사용자의 version 값을 재정의하지 않습니다.
| 우선순위 | 버전 값 |
|---|
| 1 | {your version value} |
| 2 | {image_tag}_{first_7_digits_of_git_commit_sha} |
| 3 | {image_tag} 또는 {first_7_digits_of_git_commit_sha}(하나만 사용 가능한 경우) |
요구 사항:
- Datadog Agent 버전 7.52.0 이상
- 서비스가 컨테이너화된 환경에서 실행되고
image_tag만으로 새 버전 배포를 추적하는 데 충분하면 추가적인 구성이 필요하지 않습니다. - 서비스가 컨테이너화된 환경에서 실행되지 않거나, Git SHA도 포함하고자 하는 경우 빌드 아티팩트에 Git 정보를 임베드하세요.
Fluent Bit 또는 FireLens를 사용하는 ECS Fargate에서는, unified service tagging을 로그 수집이 아닌 메트릭과 트레이스에만 사용할 수 있습니다.
전체 구성
unified service tagging 전체 범위를 이용하려면 DD_ENV, DD_SERVICE, DD_VERSION(자동 버전 태깅 포함, 선택 사항) 환경 변수 및 해당하는 Docker 레이블을 각 서비스의 컨테이너 런타임 환경에서 설정하세요. 예를 들어 ECS 작업 정의를 통해 이 모든 구성을 한곳에서 설정할 수 있습니다.
"environment": [
{
"name": "DD_ENV",
"value": "<ENV>"
},
{
"name": "DD_SERVICE",
"value": "<SERVICE>"
},
{
"name": "DD_VERSION",
"value": "<VERSION>"
}
],
"dockerLabels": {
"com.datadoghq.tags.env": "<ENV>",
"com.datadoghq.tags.service": "<SERVICE>",
"com.datadoghq.tags.version": "<VERSION>"
}
ECS Fargate에서는 이러한 태그를 Datadog Agent 컨테이너가 아니라 애플리케이션 컨테이너에 추가해야 합니다.
부분 구성
서비스에 Datadog 환경 변수가 필요하지 않은 경우(예를 들어 Redis, PostgreSQL, NGINX와 같은 타사 소프트웨어 및 APM이 추적하지 않는 애플리케이션) ECS 작업 정의에서 Docker 레이블을 사용하면 됩니다.
"dockerLabels": {
"com.datadoghq.tags.env": "<ENV>",
"com.datadoghq.tags.service": "<SERVICE>",
"com.datadoghq.tags.version": "<VERSION>"
}
컨테이너화된 환경에서 APM 데이터 자동 버전 태깅
APM에서 version 태그를 사용하여 배포를 모니터링하고 잘못된 배포 자동 탐지를 사용해 오류 코드 배포를 식별할 수 있습니다.
APM 데이터의 경우, Datadog은 version 태그를 다음과 같은 우선순위 순서로 설정합니다. version을 수동으로 설정하면 Datadog이 사용자의 version 값을 재정의하지 않습니다.
| 우선순위 | 버전 값 |
|---|
| 1 | {your version value} |
| 2 | {image_tag}_{first_7_digits_of_git_commit_sha} |
| 3 | {image_tag} 또는 {first_7_digits_of_git_commit_sha}(하나만 사용 가능한 경우) |
요구 사항:
- Datadog Agent 버전 7.52.0 이상
- 서비스가 컨테이너화된 환경에서 실행되고
image_tag만으로 새 버전 배포를 추적하는 데 충분하면 추가적인 구성이 필요하지 않습니다. - 서비스가 컨테이너화된 환경에서 실행되지 않거나, Git SHA도 포함하고자 하는 경우 빌드 아티팩트에 Git 정보를 임베드하세요.