- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
버전 6.0부터 에이전트는 UDP 트랜스포트의 대안으로 유닉스 도메인 소켓(UDS)을 사용하여 메트릭을 수집할 수 있습니다.
UDP는 localhost
에서 잘 작동하지만 컨테이너화된 환경에서는 설정하기가 어려울 수 있습니다. 유닉스 도메인 소켓을 사용하면 Datadog 에이전트 컨테이너의 IP에 관계없이 소켓 파일로 연결을 설정할 수 있습니다. 또한 다음과 같은 이점을 제공합니다:
유닉스 도메인 소켓은 연결을 설정하기 위해 IP:port
페어을 사용하는 대신 플레이스홀더 소켓 파일을 사용합니다. 연결이 열리면 데이터는 UDP 트랜스포트와 동일한 데이터그램 형식으로 전송됩니다. 에이전트가 다시 시작되면 기존 소켓이 삭제되고 새 소켓으로 대체됩니다. 클라이언트 라이브러리는 이 변경 사항을 감지하고 새 소켓에 원활하게 연결합니다.
참고:
유닉스 도메인 소켓으로 DogStatsD를 설정하려면 dogstatsd_socket
매개 변수를 통해 DogStatsD 서버를 활성화합니다. 그런 다음 코드에서 DogStatsD 클라이언트를 설정합니다.
에이전트 DogStatsD UDS를 활성화합니다:
sudo mkdir -p /var/run/datadog/
dd-agent
사용자에게 다음 소켓 파일 읽기 및 쓰기 권한이 있는지 확인하세요.sudo chown dd-agent:dd-agent /var/run/datadog/
use_dogstatsd
를 true
로 설정합니다.
dogstatsd_socket
를 DogStatsD가 리스닝 소켓을 생성하는 경로로 설정합니다.
## @param dogstatsd_socket - string - optional - default: ""
## Listen for Dogstatsd metrics on a Unix Socket (*nix only).
## Set to a valid and existing filesystem path to enable.
#
dogstatsd_socket: '/var/run/datadog/dsd.socket'
에이전트 컨테이너에서 DD_DOGSTATSD_SOCKET=<YOUR_UDS_PATH>
환경 변수를 사용하여 소켓 경로를 설정합니다.
양쪽에 호스트 디렉토리를 마운트하여 애플리케이션 컨테이너에서 소켓 파일에 액세스할 수 있도록 합니다 (애플리케이션 컨테이너에서는 읽기 전용, 에이전트 컨테이너에서는 읽기-쓰기). 개별 소켓 대신 상위 폴더를 마운트하면 DogStatsD가 다시 시작될 때 소켓 통신이 지속될 수 있습니다:
-v /var/run/datadog:/var/run/datadog
로 에이전트 컨테이너를 시작합니다.-v /var/run/datadog:/var/run/datadog:ro
로 애플리케이션 컨테이너를 시작합니다.에이전트 컨테이너에서 DD_DOGSTATSD_SOCKET=<YOUR_UDS_PATH>
환경 변수를 사용해 소켓 경로를 설정합니다. (예: /var/run/datadog/dsd.socket
).
양쪽에 호스트 디렉토리를 마운트하여 애플리케이션 컨테이너에서 소켓 파일에 액세스할 수 있도록 합니다 (애플리케이션 컨테이너에서는 읽기 전용, 에이전트 컨테이너에서는 읽기-쓰기). 개별 소켓 대신 상위 폴더를 마운트하면 DogStatsD가 다시 시작될 때 소켓 통신이 지속될 수 있습니다.
datadog-agent
컨테이너에 소켓 폴더를 마운트합니다:
volumeMounts:
- name: dsdsocket
mountPath: /var/run/datadog
##...
volumes:
- hostPath:
path: /var/run/datadog/
name: dsdsocket
애플리케이션 컨테이너에 동일한 폴더를 노출하세요:
volumeMounts:
- name: dsdsocket
mountPath: /var/run/datadog
readOnly: true
## ...
volumes:
- hostPath:
path: /var/run/datadog/
name: dsdsocket
참고: 애플리케이션 컨테이너에서 소켓에 대한 쓰기 권한이 필요한 경우 readOnly: true
를 제거합니다.
에이전트 컨테이너에서 DD_DOGSTATSD_SOCKET=<YOUR_UDS_PATH>
환경 변수를 사용해 소켓 경로를 설정합니다. (예: /var/run/datadog/dsd.socket
).
양쪽에 호스트 디렉토리를 마운트하여 애플리케이션 컨테이너에서 소켓 파일에 액세스할 수 있도록 합니다 (애플리케이션 컨테이너에서는 읽기 전용, 에이전트 컨테이너에서는 읽기-쓰기). 개별 소켓 대신 상위 폴더를 마운트하면 DogStatsD가 다시 시작될 때 소켓 통신이 지속될 수 있습니다.
빈 폴더를 포드 사양에 마운트합니다:
volumes:
- emptyDir: {}
name: dsdsocket
datadog-agent
컨테이너에 소켓 폴더를 마운트합니다:
volumeMounts:
- name: dsdsocket
mountPath: /var/run/datadog
애플리케이션 컨테이너에 동일한 폴더를 노출하세요:
volumeMounts:
- name: dsdsocket
mountPath: /var/run/datadog
readOnly: true
참고: 애플리케이션 컨테이너에서 소켓에 대한 쓰기 권한이 필요한 경우 readOnly: true
를 제거합니다.
셸 스크립트에서 메트릭을 보내거나 DogStatsD가 소켓에서 수신 대기 중인지 테스트하려면 netcat
을 사용합니다. Debian에서 netcat-openbsd
나 RHEL에서 nmap-ncat
등 대부분의 netcat
구현은 -U
플래그가 있는 유닉스 소켓 트래픽을 지원합니다:
echo -n "custom.metric.name:1|c" | nc -U -u -w1 /var/run/datadog/dsd.socket
출처 감지를 사용하면 DogStatsD가 컨테이너 메트릭의 출처를 감지하고, 메트릭에 자동으로 태그를 지정할 수 있습니다. 이 모드를 활성화하면 UDS가 수신하는 모든 메트릭은 자동 탐지 메트릭과 동일한 컨테이너 태그로 태그가 지정됩니다.
에이전트의 기본 설정 파일에서 dogstatsd_origin_detection
옵션을 활성화합니다:
## @param dogstatsd_origin_detection - boolean - optional - default: false
## When using Unix Socket, DogStatsD can tag metrics
## with container metadata. If running DogStatsD in a container,
## host PID mode (for example, with --pid=host) is required.
#
dogstatsd_origin_detection: true
선택 사항 - 출처 감지를 사용하여 수집된 메트릭에 대해 태그 카디널리티를 설정하려면 매개 변수 dogstatsd_tag_cardinality
를 low
(기본값), orchestrator
, 또는 high
로 설정합니다:
## @param dogstatsd_tag_cardinality - string - optional - default: low
## Configure the level of granularity of tags to send for DogStatsD
## metrics and events. Choices are:
## * low: add tags about low-cardinality objects
## (clusters, hosts, deployments, container images, ...)
## * orchestrator: add tags about pods (Kubernetes),
## or tasks (ECS or Mesos) -level of cardinality
## * high: add tags about high-cardinality objects
## (individual containers, user IDs in requests, etc.)
##
## WARNING: Sending container tags for DogStatsD metrics may create
## more metrics (one per container instead of one per host).
## This may impact your custom metrics billing.
#
dogstatsd_tag_cardinality: low
에이전트 컨테이너에 DD_DOGSTATSD_ORIGIN_DETECTION=true
환경 변수를 설정합니다.
선택 사항 - 출처 감지를 사용하여 수집된 메트릭에 대해 태그 카디널리티를 설정하려면 매개 변수 DD_DOGSTATSD_TAG_CARDINALITY
를 low
(기본값), orchestrator
, 또는 high
로 설정합니다:
컨테이너 내부에서 실행하는 경우, 출처 감지가 안정적으로 작동하려면 호스트의 PID 네임스페이스에서 DogStatsD를 실행해야 합니다. --pid=host
flag. This is supported by ECS with the parameter "pidMode": "host"
를 컨테이너의 작업 정의에 추가하여 도커에서 활성화합니다. 이 옵션은 Fargate에서는 지원되지 않습니다. 자세한 내용은 PID 모드에 대한 AWS 설명서를 참조하세요.
에이전트 컨테이너에서 DD_DOGSTATSD_ORIGIN_DETECTION
환경 변수를 true로 설정합니다.
# (...)
env:
# (...)
- name: DD_DOGSTATSD_ORIGIN_DETECTION
value: 'true'
포드 템플릿 사양에서 hostPID: true
를 설정합니다:
# (...)
spec:
# (...)
hostPID: true
선택 사항 - 출처 감지를 사용하여 수집된 메트릭에 대해 [태그 카디널리티][2]를 설정하려면 매개 변수 DD_DOGSTATSD_TAG_CARDINALITY
를 low
(기본값), orchestrator
, 또는 high
로 설정합니다:
# (...)
env:
# (...)
- name: DD_DOGSTATSD_TAG_CARDINALITY
value: 'low'
에이전트 컨테이너에서 DD_DOGSTATSD_ORIGIN_DETECTION
환경 변수를 true로 설정합니다.
# (...)
env:
# (...)
- name: DD_DOGSTATSD_ORIGIN_DETECTION
value: 'true'
포드 템플릿 사양에서 shareProcessNamespace: true
를 설정합니다:
# (...)
spec:
# (...)
shareProcessNamespace: true
선택 사항 - 출처 감지를 사용하여 수집된 메트릭에 대해 [태그 카디널리티][2]를 설정하려면 매개 변수 DD_DOGSTATSD_TAG_CARDINALITY
를 low
(기본값), orchestrator
, 또는 high
로 설정합니다:
# (...)
env:
# (...)
- name: DD_DOGSTATSD_TAG_CARDINALITY
value: 'low'
**참고: ** container_id
, container_name
, pod_name
태그는 너무 많은 커스텀 메트릭이 생성되지 않도록 하기 위해 기본적으로 추가되지 않습니다.
다음 공식 DogStatsD 클라이언트 라이브러리는 기본적으로 UDS 트래픽을 지원합니다. UDS 트래픽을 활성화하는 방법은 라이브러리 설명서를 참조하세요. 참고: UDP와 마찬가지로 트래픽이 많을 때 성능을 개선하려면 클라이언트 사이드 버퍼링을 활성화하는 것이 좋습니다:
언어 | 라이브러리 |
---|---|
Golang | DataDog/datadog-go |
자바(Java) | DataDog/java-dogstatsd-client |
파이썬(Python) | DataDog/datadogpy |
루비(Ruby) | DataDog/dogstatsd-ruby |
PHP | DataDog/php-datadogstatsd |
C# | DataDog/dogstatsd-csharp-client |
애플리케이션 또는 클라이언트 라이브러리가 UDS 트래픽을 지원하지 않는 경우, socat
을 실행하여 UDP 포트 8125
에서 수신 대기하고 요청을 소켓에 프록시합니다:
socat -s -u UDP-RECV:8125 UNIX-SENDTO:/var/run/datadog/dsd.socket
추가 구현 옵션 생성에 대한 지침은 datadog-agent GitHub 위키를 참조하세요.
추가 유용한 문서, 링크 및 기사: