- 필수 기능
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- 디지털 경험
- 소프트웨어 제공
- 보안
- 로그 관리
- 관리
- 인프라스트럭처
- ci
- containers
- csm
- ndm
- otel_guides
- overview
- slos
- synthetics
- tests
- 워크플로
아마존 ECS는 도커(Docker) 컨테이너를 지원하며 확장성과 성능이 뛰어난 컨테이너 오케스트레이션 서비스입니다. Datadog Agent와 함께 사용하면 클러스터 내 모든 EC2 인스턴스의 ECS 컨테이너와 작업을 모니터링할 수 있습니다.
이 페이지에서는 Datadog 컨테이너 에이전트를 사용한 Amazon ECS의 설정법에 대해 다룹니다. 다른 설정이 필요하시면 다음 내용을 참조해 주세요.
참조: Fargate에서 ECS설정을 원하시면 AWS Fargate에서의 Amazon ECS 가이드를 참조하시기 바랍니다. EC2 인스턴스에 배포된 Datadog 에이전트 컨테이너는 Fargate 작업을 모니터링할 수 없습니다. 또한, AWS Batch는 지원되지 않습니다.
ECS의 Datadog 에이전트는 ECS 클러스터 내의 모든 EC2 인스턴스에 한 번씩 컨테이너로 배포되어야 합니다. 이를 위해 Datadog 에이전트 컨테이너에 대한 작업 정의를 생성하고 Daemon 서비스로 배포합니다. 그런 다음 각 Datadog 에이전트 컨테이너는 각각의 EC2 인스턴스에서 다른 컨테이너를 모니터링합니다.
EC2 컨테이너 서비스 클러스터가 설정되어 있지 않은 경우 ECS 설명서의 ‘시작하기’를 참조하셔서 클러스터를 설정하세요. 설정이 끝난 후에는 다음의 지침대로 실행하세요.
참조: ECS 및 도커(Docker)와 함께 Datadog의 자동탐지를 실행하면 환경에서 실행 중인 작업을 자동으로 탐지하고 모니터링할 수 있습니다.
작업 정의는 필수적인 설정과 함께 Datadog 에이전트 컨테이너를 시작합니다. 에이전트 설정을 수정해야 하는 경우 작업 정의를 업데이트하고 필요에 따라 Daemon 서비스를 재배치하시면 됩니다. AWS CLI 도구 또는 Amazon Web Console을 사용하여 작업 정의를 설정할 수 있습니다.
다음 샘플은 핵심 인프라스트럭처 모니터링을 위한 최소한의 설정입니다. 이외에도 여러 기능을 가진 작업 정의 샘플은 추가적인 에이전트 기능 설정에서 제공됩니다.
Linux 컨테이너인 경우 datadog-agent-ecs.json을 다운로드하세요.
기본 작업 정의 파일 편집하기
계정의 Datadog API 키로 <YOUR_DATADOG_API_KEY>
를 설정하세요.
DD_SITE
환경 변수를 로 설정하세요.
참고: DD_SITE
환경 변수가 명확하게 설정되어 있지 않으면 US``datadoghq.com
사이트로 디폴트 됩니다. 다른 사이트(EU
,US3
,US1-FED
)를 사용하고 있다면 유효하지 않은 API 키 메시지가 발생할 수 있으므로 설정하지 마시기 바랍니다. 사용하고 있는 사이트에 대한 설명서는 사이트 선택기 설명서에서 확인하실 수 있습니다.
선택 사항 - 다음을 ECS 작업 정의에 추가하여 ECS Anywhere 클러스터에 배포할 수 있습니다.
"requiresCompatibilities": ["EXTERNAL"]
선택 사항 - ECS 작업 정의에 에이전트 헬스 체크를 추가하세요.
"healthCheck": {
"retries": 3,
"command": ["CMD-SHELL","agent health"],
"timeout": 5,
"interval": 30,
"startPeriod": 15
}
이러한 모든 예에 대해 [AWS 시크릿 매니저에 저장된 “일반 텍스트” 암호의 ARN]을 참조하여 DD_API_KEY
환경 변수를 덧붙일 수 있습니다16. 또한, 환경 변수DD_TAGS
에 따라 태그를 추가할 수도 있습니다.
작업 정의 파일이 생성되면 다음 명령을 실행하여 AWS에 등록할 수 있습니다.
aws ecs register-task-definition --cli-input-json file://<path to datadog-agent-ecs.json>
작업 정의 파일이 생성되면 AWS 콘솔에 로그인한 후 등록할 수 있습니다.
이상적으로는 각 EC2 인스턴스에 하나의 실행 중인 Datadog 에이전트 컨테이너가 필요합니다. 가장 쉬운 방법은 Datadog 에이전트 작업 정의를 Daemon 서비스로 실행하는 것입니다.
DAEMON
을 선택하고 서비스 이름을 입력합니다. Next를 클릭합니다.위에 제공된 초기 작업 정의는 상당히 최소화된 것입니다. 이 작업 정의는 기본 설정이 되어 있는 에이전트 컨테이너를 배포하여 ECS 클러스터의 컨테이너에 대한 핵심 메트릭을 수집합니다. 또한 이 에이전트는 해당 컨테이너에서 검색된 도커(Docker) 자동탐지 라벨를 기반으로 에이전트 통합을 실행할 수 있습니다.
사용한다면
DogStatsD를 사용하는 경우 DataDog 에이전트의 컨테이너 정의에 8125/udp에 대한 호스트 포트 매핑을 추가합니다:
"portMappings": [
{
"hostPort": 8125,
"protocol": "udp",
"containerPort": 8125
}
]
포트 매핑과 더불어 환경 변수 DD_DOGSTATSD_NON_LOCAL_TRAFFIC
를 true
로 설정하세요.
이 설정은 DogStatsD 트래픽을 애플리케이션 컨테이너에서 호스트 및 호스트 포트를 통해 DataDog 에이전트 컨테이너로 라우팅할 수 있도록 합니다. 그러나 애플리케이션 컨테이너는 이 트래픽에 대해 호스트의 개인 IP 주소를 사용해야 합니다. 이는 인스턴스 메타데이터 서비스(IMDS)에서 검색 가능한 EC2 인스턴스의 사설 IP 주소로 환경 변수DD_AGENT_HOST
를 설정하여 활성화할 수 있습니다. 또는 초기화 중에 코드에서 설정할 수 있습니다. DogStatsD 실행은 애플리케이션 성능 모니터링(APM)과 동일합니다. 추적 에이전트 종점 설정에서 예시를 참고하시기 바랍니다.
EC2 인스턴스의 보안 그룹 설정이 APM 및 DogStatsD의 포트를 공개적으로 노출하지 않도록 해야 합니다.
실시간 컨테이너 데이터는 Datadog 에이전트 컨테이너에 의해 자동으로 수집됩니다. 모든 컨테이너에 대한 실시간 프로세스 정보를 수집하여 Datadog로 보내려면 작업 정의를 환경 변수로 업데이트합니다:
{
"name": "DD_PROCESS_AGENT_ENABLED",
"value": "true"
}
이 기능은 리눅스에서만 지원됩니다
linuxParameters
를 추가할 수 없으므로 초기 NPM 설정에는 CLI가 필요합니다.{
"containerDefinitions": [
(...)
"mountPoints": [
(...)
{
"containerPath": "/sys/kernel/debug",
"sourceVolume": "debug"
},
(...)
],
"environment": [
(...)
{
"name": "DD_SYSTEM_PROBE_NETWORK_ENABLED",
"value": "true"
}
],
"linuxParameters": {
"capabilities": {
"add": [
"SYS_ADMIN",
"SYS_RESOURCE",
"SYS_PTRACE",
"NET_ADMIN",
"NET_BROADCAST",
"NET_RAW",
"IPC_LOCK",
"CHOWN"
]
}
},
],
"requiresCompatibilities": [
"EC2"
],
"volumes": [
(...)
{
"host": {
"sourcePath": "/sys/kernel/debug"
},
"name": "debug"
},
(...)
],
"family": "datadog-agent-task"
}
Agent v6.10+인 경우 호스트 인스턴스의 보안 그룹이 관련 포트에 있는 응용 컨테이너에 도달할 수 있도록 설정되어 있다면 응용 컨테이너에 대해 awsvpc
모드가 지원됩니다.
Agent를 awsvpc
모드로 실행할 수는 있습니다만, 권장하지는 않습니다. Agent가 DogStatsD 메트릭이나 APM 트레이스에 도달하기 위한 ENI IP를 가져오기가 어려울 수 있기 때문입니다.
대신 브리지 모드에서 에이전트를 포트 매핑과 함께 실행하면 메타데이터 서버를 통해 호스트 IP를 더욱 쉽게 가져올 수 있습니다.
Datadog의 GOVCLOUD 데이터 센터로 데이터를 보내려면 fips-proxy
사이드카 컨테이너를 추가하고 컨테이너 포트를 열어 지원되는 기능에 대한 적절한 통신이 이루어지도록 합니다.
참고: 이 기능은 Linux에서만 사용할 수 있습니다.
{
"containerDefinitions": [
(...)
{
"name": "fips-proxy",
"image": "datadog/fips-proxy:1.1.1",
"portMappings": [
{
"containerPort": 9803,
"protocol": "tcp"
},
{
"containerPort": 9804,
"protocol": "tcp"
},
{
"containerPort": 9805,
"protocol": "tcp"
},
{
"containerPort": 9806,
"protocol": "tcp"
},
{
"containerPort": 9807,
"protocol": "tcp"
},
{
"containerPort": 9808,
"protocol": "tcp"
},
{
"containerPort": 9809,
"protocol": "tcp"
},
{
"containerPort": 9810,
"protocol": "tcp"
},
{
"containerPort": 9811,
"protocol": "tcp"
},
{
"containerPort": 9812,
"protocol": "tcp"
},
{
"containerPort": 9813,
"protocol": "tcp"
},
{
"containerPort": 9814,
"protocol": "tcp"
},
{
"containerPort": 9815,
"protocol": "tcp"
},
{
"containerPort": 9816,
"protocol": "tcp"
},
{
"containerPort": 9817,
"protocol": "tcp"
},
{
"containerPort": 9818,
"protocol": "tcp"
}
],
"essential": true,
"environment": [
{
"name": "DD_FIPS_PORT_RANGE_START",
"value": "9803"
},
{
"name": "DD_FIPS_LOCAL_ADDRESS",
"value": "127.0.0.1"
}
]
}
],
"family": "datadog-agent-task"
}
또한 FIPS 프록시를 통해 트래픽을 전송하려면 Datadog Agent 컨테이너의 환경 변수를 업데이트해야 합니다.
{
"containerDefinitions": [
{
"name": "datadog-agent",
"image": "public.ecr.aws/datadog/agent:latest",
(...)
"environment": [
(...)
{
"name": "DD_FIPS_ENABLED",
"value": "true"
},
{
"name": "DD_FIPS_PORT_RANGE_START",
"value": "9803"
},
{
"name": "DD_FIPS_HTTPS",
"value": "false"
},
],
},
],
"family": "datadog-agent-task"
}
도움이 필요하신가요? Datadog 고객 지원팀에 문의해 주세요.
Additional helpful documentation, links, and articles: