- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
커스텀 애플리케이션 메트릭을 Datadog으로 가져오는 가장 쉬운 방법은 Datadog 에이전트와 함께 제공되는 메트릭 애그리게이션 서비스인 DogStatsD로 보내는 것입니다. DogStatsD는 StatsD 프로토콜을 구현하고 몇 가지 Datadog-specific 익스텐션을 추가합니다:
호환되는 StatsD 클라이언트는 DogStatsD 및 에이전트와 함께 작동하지만 Datadog-specific 익스텐션은 포함하지 않습니다.
참고: DogStatsD는 StatsD의 타이머를 네이티브 메트릭 유형으로 구현하지 않습니다(그러나 히스토그램을 통해서는 지원).
DogStatsD는 Docker Hub 및 GCR에서 사용할 수 있습니다:
DogStatsD는 UDP를 통해 커스텀 메트릭, 이벤트 및 서비스 검사를 수락하고 이를 주기적으로 집계하여 Datadog으로 전달합니다.
UDP를 사용함에 따라 애플리케이션은 DogStatsD로 메트릭을 전송할 수 있으며, 응답을 기다릴 필요 없이 작업을 다시 시작할 수 있습니다. DogStatsD를 사용할 수 없게 되더라도 애플리케이션이 중단되지 않습니다.
DogStatsD는 데이터를 수신할 때 _flush interval_이라는 기간 동안 고유 메트릭 각각에 대한 여러 데이터 포인트를 단일 데이터 포인트로 집계합니다. DogStatsD는 10초의 플러시 간격을 사용합니다.
DogStatsD는 Datadog 에이전트와 번들되어 있는 서버와 여러 언어로 사용할 수 있는 클라이언트 라이브러리로 구성되어 있습니다. DogStatsD 서버는 기본적으로 에이전트 v6+에서 UDP 포트 8125
를 통해 활성화됩니다. 필요한 경우 서버 커스텀 포트를 설정할 수 있습니다. 주소와 Datadog 에이전트 DogStatsD 서버 포트가 일치하도록 클라이언트를 구성하세요.
포트를 변경해야 할 경우, 주 에이전트 구성 파일에서 dogstatsd_port
옵션을 구성하고 에이전트를 재시작하세요. UNIX 도메인 소켓을 사용하도록 DogStatsD를 구성할 수도 있습니다.
커스텀 에이전트 DogStatsD 서버 UDP 포트를 활성화하는 방법:
dogstatsd_port
파라미터를 설정합니다.
## @param dogstatsd_port - integer - optional - default: 8125
## Override the Agent DogStatsD port.
## Note: Make sure your client is sending to the same UDP port.
#
dogstatsd_port: 8125
기본적으로 DogStatsD는 UDP 포트 8125에서 수신하므로 컨테이너에서 에이전트를 실행할 때 이 포트를 호스트 포트에 바인딩해야 합니다. StatsD 메트릭이 localhost
의 외부에서 오는 경우 DD_DOGSTATSD_NON_LOCAL_TRAFFIC
를 true
로 설정하여 메트릭 수집을 허용해야 합니다. DogStatsd 서버를 실행한 상태에서 에이전트를 실행하려면 다음 명령을 실행하세요:
docker run -d --cgroupns host \
--pid host \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /proc/:/host/proc/:ro \
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
-e DD_API_KEY=<DATADOG_API_KEY> \
-e DD_DOGSTATSD_NON_LOCAL_TRAFFIC="true" \
-p 8125:8125/udp \
gcr.io/datadoghq/agent:latest
StatsD 메트릭을 수집하는 데 사용하는 포트를 변경해야 할 경우 DD_DOGSTATSD_PORT="<NEW_DOGSTATSD_PORT>
환경 변수를 사용하세요. 또 UNIX 도메인 소켓을 사용하도록 DogStatsD를 구성할 수도 있습니다.
출처 감지는 에이전트 v6.10.0 이상에서 지원되며, DogStatsD가 컨테이너 메트릭의 출처를 감지하고 자동으로 메트릭에 태그를 지정할 수 있도록 합니다. 이 모드가 활성화되면 UDP를 통해 수신된 모든 메트릭은 자동 탐지 메트릭과 동일한 포드 태그로 태그가 지정됩니다.
쿠버네테스가 아닌 환경에서의 출처 감지는 데이터그램 형식 및 Shell 사용량의 DogStatsD 프로토콜 확장을 기반으로 합니다. 에이전트에서 이 기능을 실행하려면 DD_DOGSTATSD_ORIGIN_DETECTION_CLIENT
환경 변수를 true
로 설정합니다.
참고: Fargate 환경에서는 출처 감지가 지원되지 않습니다.
StatsD 메트릭 수집은 UNIX 도메인 소켓에서 기본적으로 활성화됩니다. UDP를 통해 StatsD 메트릭 수집을 시작하려면 Operator 설정에서 DogStatsD 기능을 활성화해야 합니다.
datadog-agent.yaml
매니페스트에 features.dogstatsd.hostPortConfig.enabled
를 추가합니다.
features:
dogstatsd:
hostPortConfig:
enabled: true
datadog-agent.yaml
매니페스트 예시입니다.
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
name: datadog
spec:
global:
credentials:
apiSecret:
secretName: datadog-secret
keyName: api-key
features:
dogstatsd:
hostPortConfig:
enabled: true
이를 통해 Agent는 포트 8125
에서 UDP를 통해 StatsD 메트릭을 수집할 수 있습니다.
변경 사항을 적용합니다:
kubectl apply -f datadog-agent.yaml
경고: features.dogstatsd.hostPortConfig.hostPort
파라미터는 호스트의 포트를 엽니다. 방화벽이 애플리케이션이나 신뢰할 수 있는 소스의 액세스만 허용하는지 확인하세요. 네트워크 플러그인이 hostPorts
를 지원하지 않는 경우 Agent 포드 사양에 hostNetwork: true
를 추가하세요. 이는 호스트의 네트워크 네임스페이스를 Datadog Agent와 공유합니다. 이는 또한 컨테이너에서 열려 있는 모든 포트가 호스트에서도 열려 있음을 의미합니다. 포트가 호스트와 컨테이너 모두에서 사용되는 경우 충돌이 발생하고(동일한 네트워크 네임스페이스를 공유하므로) 파드가 시작되지 않습니다. 일부 Kubernetes 설치에서는 이를 허용하지 않습니다.
애플리케이션에서 호스트의 IP 주소를 확인할 수 있는 정확한 방법이 필요합니다. 이에 쿠버네티스 1.7에서는 환경 변수로 포드에 전달할 수 있는 속성 집합을 확장하는 것이 가능합니다. 버전 1.7 이상에서는 PodSpec에 환경 변수를 추가하여 모든 포드에 호스트 IP를 전달할 수 있습니다. 예를 들어, 애플리케이션 매니페스트는 다음과 같습니다:
env:
- name: DD_AGENT_HOST
valueFrom:
fieldRef:
fieldPath: status.hostIP
이 기능을 사용하면 애플리케이션을 실행하는 모든 포드가 $DD_AGENT_HOST
에서 8125
포트를 통해DogStatsD 메트릭을 전송할 수 있습니다.
참고: Datadog는 속성을 할당할 때 통합 서비스 태깅을 사용할 것을 권장합니다. 통합 서비스 태깅은 세 가지 표준 태그인 env
,service
및 version
을 사용하여 Datadog 텔레메트리를 연결합니다. 환경 통합 방법에 대한 자세한 내용은 통합 서비스 태깅을 참조하세요.
출처 감지는 에이전트 6.10.0+에서 지원되며 DogStatsD는 컨테이너 메트릭의 출처를 탐지하고 메트릭에 자동으로 태그를 지정할 수 있습니다. 이 모드를 사용하도록 설정하면 UDP를 통해 수신된 모든 메트릭이 자동탐지 메트릭과 동일한 포드 태그로 태그가 지정됩니다.
오리진 감지를 활성화하려면 datadog-agent.yaml
매니페스트에 global.originDetectionUnified.enabled
설정을 추가합니다.
global:
originDetectionUnified:
enabled: true
참고:
파드 ID를 엔티티 ID로 사용하려면 애플리케이션 매니페스트에 다음 줄을 추가하세요.
env:
- name: DD_ENTITY_ID
valueFrom:
fieldRef:
fieldPath: metadata.uid
오리진 감지를 사용하여 수집된 메트릭에 대해 태그 카디널리티를 설정하려면 features.dogstatsd.tagCardinality
설정을 low
(기본값), orchestrator
또는 high
로 설정합니다.
참고: UDP의 경우 커스텀 메트릭이 너무 많이 생성되는 것을 방지하기 위해 pod_name
태그가 기본값으로 추가되지 않습니다.
Helm을 사용하여 DogStatsD로 커스텀 메트릭을 수집하려면:
datadog-values.yaml 파일을 업데이트하여 DogStatsD를 활성화합니다:
dogstatsd:
port: 8125
useHostPort: true
nonLocalTraffic: true
참고: hostPort
기능을 사용하려면 Calico, Canal 또는 Flannel과 같이 CNI 사양을 준수하는 네트워크 제공자가 필요합니다. CNI를 준수하지 않는 네트워크 제공자에 대한 해결 방법과 자세한 내용은 쿠버네티스 설명서 HostPort 서비스가 작동하지 않음을 참조하세요.
경고: hostPort
파라미터는 호스트의 포트를 엽니다. 방화벽이 애플리케이션 또는 신뢰할 수 있는 소스로부터의 액세스만 허용하는지 확인하세요. 네트워크 플러그인이 hostPorts
를 지원하지 않는 경우 에이전트 포드 사양에 hostNetwork: true
을 추가합니다. 그러면 호스트의 네트워크 네임스페이스가 Datadog 에이전트와 공유됩니다. 또한 컨테이너에서 열려 있는 모든 포트가 호스트에서 열려 있음을 의미합니다. 포트가 호스트와 컨테이너 모두에서 사용되는 경우 포트가 충돌하여(같은 네트워크 네임스페이스를 공유하므로) 포드가 시작되지 않습니다. 일부 쿠버네티스 설치에서는 이를 허용하지 않습니다.
에이전트 설정을 업그레이드합니다:
helm upgrade -f datadog-values.yaml <RELEASE_NAME> datadog/datadog
애플리케이션 포드 업데이트: 애플리케이션에서 호스트의 IP 주소를 확인할 수 있는 정확한 방법이 필요합니다. 이에 쿠버네티스 1.7에서는 환경 변수로 포드에 전달할 수 있는 속성 집합을 확장하는 것이 가능합니다. 버전 1.7 이상에서는 PodSpec에 환경 변수를 추가하여 모든 포드에 호스트 IP를 전달할 수 있습니다. 예를 들어, 애플리케이션 매니페스트는 다음과 같습니다:
env:
- name: DD_AGENT_HOST
valueFrom:
fieldRef:
fieldPath: status.hostIP
이 기능을 사용하면 애플리케이션을 실행하는 모든 포드가 $DD_AGENT_HOST
의 8125
포트를 통해 DogStatsD 메트릭을 전송할 수 있습니다.
원하는 언어로 DogStatsD 클라이언트 라이브러리를 설치하고 Datadog 에이전트 DogStatsD 서버의 주소 및 포트와 일치하도록 구성합니다.
공식 Datadog-DogStatsD 클라이언트 라이브러리는 다음 언어로 사용할 수 있습니다. 호환되는 StatsD 클라이언트는 DogStatsD 및 에이전트와 함께 작동하지만 위에서 언급한 Datadog-specific 기능은 포함하지 않습니다:
다음을 composer.json
에 추가합니다:
"datadog/php-datadogstatsd": "1.6.*"
참고: Composer에서 제공되는 첫 번째 버전은 _0.0.3_입니다.
또는 github.com/DataDog/php-datadogstatsd 에 있는 리포지토리를 수동으로 복제하고 require './src/DogStatsd.php'
를 사용하여 설정합니다.
DogStatsD 클라이언트가 설치되면 코드에서 인스턴스화합니다:
Composer를 사용하여 새 DogStatsd 개체를 인스턴스화합니다:
<?php
require __DIR__ . '/vendor/autoload.php';
use DataDog\DogStatsd;
$statsd = new DogStatsd(
array('host' => '127.0.0.1',
'port' => 8125,
)
);
참고: Datadog는 태그를 할당할 때 통합 서비스 태깅을 사용할 것을 권장합니다. 통합 서비스 태깅은 세 가지 표준 태그 env
,service
, version
를 사용하여 Datadog 텔레메트리를 연결합니다. 환경 통합 방법에 대한 자세한 내용은 통합 서비스 태깅을 참조하세요.
필수 DogStatsD 설정 (url
및 port
) 외에도 DogStatsD 클라이언트에 대해 다음 파라미터를 사용할 수 있습니다:
파라미터 | 유형 | 기본값 | 설명 |
---|---|---|---|
host | 문자열 | localhost | DogStatsD 서버의 호스트입니다. 이 옵션이 설정되지 않은 경우 에이전트는 DD_AGENT_HOST 또는 DD_DOGSTATSD_URL 환경 변수를 확인합니다. |
port | 정수 | 8125 | DogStatsD 서버의 포트입니다. 이 옵션이 설정되지 않은 경우 에이전트는 DD_DOGSTATSD_PORT 또는 DD_DOGSTATSD_URL 환경 변수를 확인합니다. |
socket_path | 문자열 | null | DogStatsD UNIX 도메인 소켓의 경로입니다(host 및 port 를 재정의). 에이전트 v6+에서만 지원됩니다. 이를 설정하지 않으면, 에이전트가 DD_DOGSTATSD_URL 환경 변수를 찾습니다. |
global_tags | 문자열 목록 | null | 모든 메트릭, 이벤트 및 서비스 검사에 적용할 태그입니다. @dd.internal.entity_id 태그는 DD_ENTITY_ID 환경 변수에서 global_tags에 추가됩니다. |
DogStatsD와 StatsD는 대체로 유사하지만, DogStatsD에는 사용 가능한 데이터 유형, 이벤트, 서비스 검사 및 태그를 포함한 DataDog 관련 고급 기능이 포함되어 있습니다:
추가 유용한 문서, 링크 및 기사:
DogStatsD에서 사용하는 데이터그램 형식에 대해 자세히 알고 싶거나 자체 Datadog 라이브러리를 개발하려면 데이터그램과 쉘 사용(율) 섹션을 참조하세요. 명령줄에서 직접 메트릭과 이벤트를 보내는 방법도 확인할 수 있습니다.