AWS PrivateLink를 통한 Datadog 연결
Datadog PrivateLink는 선택한 Datadog 사이트를 지원하지 않습니다.
개요
이 가이드는 Datadog과 함께 AWS PrivateLink를 구성하는 방법을 설명합니다. 전체 프로세스는 로컬 Datadog Agent가 데이터를 전송할 수 있는 내부 엔드포인트를 VPC에 구성하는 것으로 시작됩니다. 그 후 사용자의 VPC 엔드포인트는 Datadog VPC 내의 엔드포인트와 피어링됩니다.
Datadog은 ****에서 AWS PrivateLink 엔드포인트를 제공합니다.
- 동일한 리전 내에서 Datadog 트래픽을 라우팅해야 하는 경우 동일 리전에서 연결 절차에 따라 엔드포인트를 설정하세요.
- 다른 리전에서 에 있는 Datadog의 PrivateLink 서비스로 트래픽을 라우팅해야 하는 경우 Datadog은 교차 리전 PrivateLink 엔드포인트를 권장합니다. 교차 리전 PrivateLink를 사용하면 서로 다른 AWS 리전에 있는 VPC 간 연결을 설정할 수 있습니다. 이를 통해 서로 다른 리전의 VPC 리소스가 사설 IP 주소를 사용하여 통신할 수 있습니다. 대안으로 VPC 피어링을 사용할 수도 있습니다.
동일 리전에서 연결
AWS Management Console을 원하는 리전에 연결합니다.
VPC Dashboard에서 PrivateLink and Lattice 아래의 Endpoints를 선택합니다.
Create Endpoint를 클릭합니다.
Find service by name을 선택합니다.
AWS PrivateLink를 설정하려는 서비스에 따라 Service Name 텍스트 상자를 입력합니다.
| Datadog | PrivateLink 서비스 이름 | Private DNS 이름 |
|---|
| 로그(Agent HTTP 수집) | | |
| 로그(사용자 HTTP 수집) | | |
| API | | |
| 메트릭 | | |
| 컨테이너 | | |
| 프로세스 | | |
| 프로파일링 | | |
| 트레이스 | | |
| Database Monitoring | | |
| Remote Configuration | | |
Verify를 클릭합니다. _Service name found_가 표시되지 않으면 Datadog 지원팀에 문의합니다.
Datadog VPC 서비스 엔드포인트와 피어링할 VPC 및 서브넷을 선택합니다.
Enable DNS name에서 _Enable for this endpoint_가 선택되어 있는지 확인합니다.
이 VPC 엔드포인트로 트래픽을 전송할 수 있는 대상을 제어할 보안 그룹을 선택합니다.
참고: **보안 그룹은 TCP 포트 443**에 대한 인바운드 트래픽을 허용해야 합니다.
화면 하단의 Create endpoint를 클릭합니다. 성공하면 다음과 같이 표시됩니다.
상태를 확인하려면 VPC 엔드포인트 ID를 클릭합니다.
상태가 _Pending_에서 _Available_로 변경될 때까지 기다립니다. 최대 10분이 소요될 수 있습니다. Available 상태가 되면 AWS PrivateLink를 사용할 수 있습니다.
Datadog Agent v6.19 또는 v7.19보다 이전 버전을 사용 중인 경우 로그 데이터를 수집하려면 Agent가 HTTPS를 통해 로그를 전송하도록 구성되어 있는지 확인합니다. 데이터가 아직 없는 경우 Agent datadog.yaml 구성 파일에 다음 내용을 추가하세요.
logs_config:
force_use_http: true
If you are using the container Agent, set the following environment variable instead:
DD_LOGS_CONFIG_FORCE_USE_HTTP=true
This configuration is required when sending logs to Datadog with AWS PrivateLink and the Datadog Agent, and is not required for the Lambda Extension. For more details, see Agent log collection.
Lambda Extension이 환경 변수 DD_API_KEY_SECRET_ARN에 지정된 ARN을 사용하여 AWS Secrets Manager에서 Datadog API 키를 로드하는 경우 Secrets Manager용 VPC 엔드포인트를 생성해야 합니다.
AWS PrivateLink를 통해 Datadog으로 데이터를 전송하려면 Agent를 다시 시작합니다.
다른 리전에서 연결
AWS Management Console을 원하는 리전에 연결합니다.
VPC Dashboard에서 PrivateLink and Lattice 아래의 Endpoints를 선택합니다.
Create Endpoint를 클릭합니다.
VPC 인터페이스 엔드포인트 설정을 구성합니다.
- 필요에 따라 Name tag를 입력합니다.
- Type 아래에서 PrivateLink Ready partner services를 선택합니다.
교차 리전 지원을 사용하여 인터페이스 엔드포인트를 검색하고 구성합니다.
- Service name 아래에서 아래 표에 있는 유효한 PrivateLink 서비스 이름을 입력합니다.
- Service region 아래에서 Enable Cross Region endpoint를 클릭하고 ****에서 AWS PrivateLink 엔드포인트를 제공합니다.
- Verify service를 클릭한 후 Service name verified 알림이 표시될 때까지 기다립니다.
참고: 위 단계를 완료한 후에도 서비스를 확인할 수 없는 경우 Datadog 지원팀에 문의하세요.
Network Settings 아래에서 VPC 인터페이스 엔드포인트를 배포할 VPC를 선택합니다.
Enable DNS name 옵션이 선택되어 있는지 확인합니다.
Subnets 아래에서 인터페이스 엔드포인트에 사용할 하나 이상의 서브넷을 선택합니다.
Security Groups 아래에서 VPC 엔드포인트로 트래픽을 전송할 수 있는 대상을 제어할 보안 그룹을 선택합니다.
참고: 보안 그룹은 TCP 포트 443에 대한 인바운드 트래픽을 허용해야 합니다.
필요에 따라 Name tag을 입력한 후 Create endpoint를 클릭합니다.
엔드포인트 상태가 Pending에서 Available로 변경될 때까지 몇 분 정도 기다립니다. 최대 10분이 소요될 수 있습니다. 예상보다 오래 걸리는 경우 Datadog 지원팀에 문의하세요.
엔드포인트 상태가 Available로 변경되면 이 엔드포인트를 사용하여 교차 리전 AWS PrivateLink 엔드포인트를 통해 Datadog으로 텔레메트리 데이터를 전송할 수 있습니다.
PrivateLink 서비스 이름
| Datadog | PrivateLink 서비스 이름 | Private DNS 이름 |
|---|
| 로그(Agent HTTP 수집) | | |
| 로그(사용자 HTTP 수집) | | |
| API | | |
| 메트릭 | | |
| 컨테이너 | | |
| 프로세스 | | |
| 프로파일링 | | |
| 트레이스 | | |
| Database Monitoring | | |
| Remote Configuration | | |
참고: 교차 리전 PrivateLink는 CloudWatch 메트릭을 생성하지 않습니다. 자세한 내용은 AWS PrivateLink용 CloudWatch 메트릭을 참조하세요.
- AWS 콘솔을 리전 ****에 연결한 후 VPC 엔드포인트를 생성합니다.
- Find service by name을 선택합니다.
- AWS PrivateLink를 구성하려는 서비스에 따라 Service Name 텍스트 상자를 입력합니다.
| Datadog | PrivateLink 서비스 이름 |
|---|
| 로그(Agent HTTP 수집) | |
| 로그(사용자 HTTP 수집) | |
| API | |
| 메트릭 | |
| 컨테이너 | |
| 프로세스 | |
| 프로파일링 | |
| 트레이스 | |
| Database Monitoring | |
| Remote Configuration | |
Verify를 클릭합니다. _Service name found_가 표시되지 않으면 Datadog 지원팀에 문의하세요.
다음으로 Datadog VPC 서비스 엔드포인트와 피어링할 VPC 및 서브넷을 선택합니다. VPC 피어링에서는 DNS를 수동으로 구성해야 하므로 Enable DNS name은 선택하지 마세요.
이 VPC 엔드포인트로 트래픽을 전송할 수 있는 대상을 제어할 보안 그룹을 선택합니다.
참고: **보안 그룹은 TCP 포트 443**에 대한 인바운드 트래픽을 허용해야 합니다.
화면 하단의 Create endpoint를 클릭합니다. 성공하면 다음과 같이 표시됩니다.
- 상태를 확인하려면 VPC 엔드포인트 ID를 클릭합니다.
- 상태가 _Pending_에서 _Available_로 변경될 때까지 기다립니다. 최대 10분이 소요될 수 있습니다.
- 엔드포인트를 생성한 후 VPC 피어링을 사용하여 다른 리전에서도 PrivateLink 엔드포인트를 사용할 수 있도록 구성하면 Datadog으로 PrivateLink를 통해 텔레메트리 데이터를 전송할 수 있습니다. 자세한 내용은 AWS의 Work With VPC Peering Connections 페이지를 참조하세요.
Amazon Route53
- AWS PrivateLink 엔드포인트를 생성한 각 서비스에 대해 Route53 프라이빗 호스팅 영역을 생성합니다. 프라이빗 호스팅 영역을
의 VPC에 연결합니다.
아래 목록을 사용하여 서비스와 DNS 이름을 Datadog의 각 부분에 매핑하세요.
| Datadog | PrivateLink 서비스 이름 | Private DNS 이름 |
|---|
| 로그(Agent HTTP 수집) | | |
| 로그(사용자 HTTP 수집) | | |
| API | | |
| 메트릭 | | |
| 컨테이너 | | |
| 프로세스 | | |
| 프로파일링 | | |
| 트레이스 | | |
| Database Monitoring | | |
| Remote Configuration | | |
이 정보는 AWS API의 DescribeVpcEndpointServices를 조회하거나 다음 명령을 사용하여 확인할 수도 있습니다.
aws ec2 describe-vpc-endpoint-services --service-names <service-name>`
예를 들어 의 Datadog 메트릭 엔드포인트의 경우:
aws ec2 describe-vpc-endpoint-services --service-names | jq '.ServiceDetails[0].PrivateDnsName'
이 명령은 Agent 트래픽이 발생하는 VPC에 연결하기 위해 필요한 프라이빗 호스팅 영역 이름인 metrics.agent.을 반환합니다. 이 레코드를 재정의하면 메트릭 관련 수집 호스트 이름 전체를 처리할 수 있습니다.
- 새 Route53 프라이빗 호스팅 영역마다 동일한 이름의 A 레코드를 생성합니다. Alias 옵션을 활성화한 후 Route traffic to에서 Alias to VPC endpoint, ****를 선택하고 DNS 이름에 연결된 VPC 엔드포인트의 DNS 이름을 입력합니다.참고:
- DNS 이름을 검색하려면 엔드포인트 서비스 프라이빗 DNS 이름 구성 보기 설명서를 참조하세요.
- Agent는 예를 들어
[version]-app.agent. 과 같은 버전 지정 엔드포인트로 텔레메트리를 전송하며, 이는 CNAME 별칭을 통해 metrics.agent. 으로 확인됩니다. 따라서 metrics.agent.에 대해서만 프라이빗 호스팅 영역을 설정하면 됩니다.
Datadog PrivateLink 엔드포인트가 포함된 의 VPC와 Datadog Agent가 실행되는 리전의 VPC 간에 VPC 피어링 및 라우팅을 구성합니다.
VPC가 서로 다른 AWS 계정에 있는 경우 계속 진행하기 전에 Datadog Agent가 포함된 VPC가 Route53 프라이빗 호스팅 영역과 연결될 수 있도록 권한을 부여해야 합니다. Datadog Agent가 실행되는 VPC의 리전 및 VPC ID를 사용하여 각 Route53 프라이빗 호스팅 영역에 대해 VPC 연결 권한을 생성합니다. 이 옵션은 AWS 콘솔에서는 사용할 수 없습니다. AWS CLI, SDK 또는 API를 사용하여 구성해야 합니다.
다른 리전의 VPC를 추가하도록 Route53 호스팅 영역을 편집합니다.
프라이빗 호스팅 영역(PHZ)이 연결된 VPC에서는 특정 설정을 활성화해야 합니다. 특히 PHZ와 연결된 VPC에서 enableDnsHostnames 및 enableDnsSupport 설정을 활성화해야 합니다. 자세한 내용은 프라이빗 호스팅 영역 작업 시 고려 사항을 참조하세요.
AWS PrivateLink를 통해 Datadog으로 데이터를 전송하려면 Agent를 재시작합니다.
DNS 확인 및 연결 문제 해결
DNS 이름은 의 VPC CIDR 블록에 포함된 IP 주소로 확인되어야 하며, port 443에 대한 연결이 성공해야 합니다.
DNS가 공용 IP 주소로 확인되는 경우 Route53 영역이 다른 리전의 VPC와 연결되지 않았거나 A 레코드가 존재하지 않는 것입니다.
DNS는 올바르게 확인되지만 port 443 연결이 실패하는 경우 VPC 피어링 또는 라우팅이 잘못 구성되었거나 의 VPC CIDR 블록에 대해 아웃바운드 포트 443이 허용되지 않았을 수 있습니다.
프라이빗 호스팅 영역(PHZ)이 연결된 VPC에서는 몇 가지 설정을 활성화해야 합니다. 특히 PHZ와 연결된 VPC에서 enableDnsHostnames 및 enableDnsSupport를 활성화해야 합니다. 자세한 내용은 Amazon VPC 설정을 참조하세요.
Datadog Agent
로그 데이터를 수집하는 경우 Agent가 HTTPS를 사용하여 로그를 전송하도록 구성되어 있는지 확인합니다. 데이터가 아직 없는 경우 Agent datadog.yaml 구성 파일에 다음 내용을 추가하세요.
logs_config:
force_use_http: true
If you are using the container Agent, set the following environment variable instead:
DD_LOGS_CONFIG_FORCE_USE_HTTP=true
This configuration is required when sending logs to Datadog with AWS PrivateLink and the Datadog Agent, and is not required for the Lambda Extension. For more details, see Agent log collection.
Lambda Extension이 환경 변수 DD_API_KEY_SECRET_ARN에 지정된 ARN을 사용하여 AWS Secrets Manager에서 Datadog API 키를 로드하는 경우 Secrets Manager용 VPC 엔드포인트를 생성해야 합니다.
Agent를 다시 시작합니다.
PrivateLink를 통해 데이터가 전송되는지 확인
PrivateLink 설정 후 데이터가 실제로 PrivateLink를 통해 전송되는지 확인하려면 해당 VPC에 있는 시스템에서 dig 명령을 실행합니다. 예를 들어 엔드포인트 http-intake.logs.datadoghq.com에 대해 PrivateLink를 구성한 경우 다음 명령을 실행합니다.
dig http-intake.logs.datadoghq.com
로그가 PrivateLink를 통해 전송되고 있다면 출력의 ANSWER Section 섹션에 아래 예와 같이 http-intake.logs.datadoghq.com가 표시됩니다. 참고: 반환되는 IP 주소는 프라이빗 IP 주소 공간에 속해야 합니다.
;; ANSWER SECTION:
http-intake.logs.datadoghq.com. 60 IN A 172.31.57.3
http-intake.logs.datadoghq.com. 60 IN A 172.31.3.10
http-intake.logs.datadoghq.com. 60 IN A 172.31.20.174
http-intake.logs.datadoghq.com. 60 IN A 172.31.34.135
로그가 PrivateLink를 통해 전송되지 않는 경우 출력의 ANSWER SECTION에는 로그가 전송되는 로드 밸런서(4-logs-http-s1-e721f9c2a0e65948.elb.us-east-1.amazonaws.com)가 표시됩니다.
;; ANSWER SECTION:
http-intake.logs.datadoghq.com. 177 IN CNAME http-intake-l4.logs.datadoghq.com.
http-intake-l4.logs.datadoghq.com. 173 IN CNAME l4-logs-http-s1-e721f9c2a0e65948.elb.us-east-1.amazonaws.com.
l4-logs-http-s1-e721f9c2a0e65948.elb.us-east-1.amazonaws.com. 42 IN A 3.233.158.48
l4-logs-http-s1-e721f9c2a0e65948.elb.us-east-1.amazonaws.com. 42 IN A 3.233.158.49
l4-logs-http-s1-e721f9c2a0e65948.elb.us-east-1.amazonaws.com. 42 IN A 3.233.158.50
추가 자료