AWS PRIVATELINK를 사용하여 Private Subnet에서 DataDog서버로 모니터링 데이터를 전송해 봅시다!
외부 통신이 되는 Public Subnet 환경에서는 해당 내용이 필요 없습니다.
외부 통신이 안되는 Private Subnet에서 EC2에 Data Dog Agent를 설치하여 외부에 있는 Data Dog 서버로 모니터링 데이터를 보낼려고 합니다.
VPC Peering
- VPC Peering 설정을 먼저 합니다.
- 테스트 환경은 아래와 같습니다.
- us-east-1 리전, vpc와 subnet 1개
- ap-northeast-2 리전, vpc와 subnet 2개 (public, private)
- [참고] The security group must accept inbound traffic on TCP port 443.
- ap-northeast-2 리전에서 아래와 같이 Peering 설정을 합니다.
- 메뉴: VPC > Peering connections
- Requester Region= Seoul (ap-northeast-2) 이고 Accepter Region= N. Virginia (us-east-1) 가 됩니다.
Accepter Region 에서 수락을 해주어야 연결이 완료됩니다.
- us-east-1 리전에서 아래와 같이 Peering 설정을 합니다.
- 메뉴: VPC > Peering connections
- ap-northeast-2에서 요청한 Peering 수락은 Actions > Accept request 를 클릭하면 됩니다.
AWS PRIVATELINK
- VPC Peering 설정을 먼저 합니다.
- 테스트 환경은 아래와 같습니다.
- us-east-1 리전, vpc와 subnet 1개
- ap-northeast-2 리전, vpc와 subnet 2개 (public, private)
- REGION = US East (N. Virginia) us-east-1
- PATH = VPC > VIRTUAL PRIVATE CLOUD > Endpoints > Create endpoint
1) 아래 사이트를 참고하여 endpoint를 등록합니다.
- https://docs.datadoghq.com/agent/guide/private-link/?tab=vpcpeering#setup
- 8개의 PRIVATELINK SERVICE NAME 를 등록 (Metrics ~ Containers)
2) Create endpoint 페이지
- Name tag 입력
- PrivateLink Ready partner services 체크
- Service name은 datadog 웹사이트의 PRIVATELINK SERVICE NAME 내용 입력
- Verify service 버튼 클릭 -> Service name verified. 문구가 출력되어야 함
- us-east-1에 만든 VPC 선택
- us-east-1에 만든 Subnets 선택
- us-east-1에 만든 Security groups 선택
- Create endpoint 버튼 클릭
Amazon Route53
- REGION = US East (N. Virginia) us-east-1
- PATH = VPC > Hosted zones > Create Hosted zones
- Domain name= datadoghq.com
- Type= Private hosted zone
- VPCs to associate with the hosted zone 에서
- us-east-1에 만든 VPC 선택
- ap-northeast-2에 만든 VPC 선택 (Asia Pacific (Seoul) ap-northeast-2)
- Create Hosted zones 버튼클릭
Records 추가 > Create record 버튼 클릭
- Record name 입력
- 등록해야 할 PRIVATE DNS NAME이 agent-http-intake.logs.datadoghq.com 이라면
- agent-http-intake.logs 만 입력
- Record type= A Route traffic...
- Value > Alias 체크 > Route traffic to 으로 변경됨
- Route traffic to > Choose endpoint > Alias to VPC endpoint 선택
- Choose Region > US East (N. Virginia) [us-east-1]
- Choose endpoint > 해당되는 AWS PrivateLink endpoint의 DNA names를 입력(2개중 1개 선택)
- Create record 클릭
등록 했던 AWS PrivateLink endpoint를 Records에 전부 등록
DataDog Agent Config
모니터링 솔루션으로 DataDog를 사용하는 상황이기 때문에 DataDog에 대한 내용도 포함된다.
sudo vi /etc/datadog-agent/datadog.yaml
- 808 번째 줄 주석해제
- 847 번째 줄 주석해제
- datadog.yaml 파일 저장
- datadog agent 재시작
- sudo systemctl restart datadog-agent
[참고]
PrivateSub에서 DataDog 서버로 통신하는지 확인
확인해 보면 IP 주소가 출력되는데 US East (N. Virginia) us-east-1 에서 Endpoints에 등록되어 할당된 주소와 일치함을 확인할 수 있다.
dig +short trace.agent.datadoghq.com
nc -w1 -vz trace.agent.datadoghq.com 443
Private Subnet EC2 인스턴스에 설치된 DataDog Agent가 DataDog 서버로 모니터링 데이터를 전송하는 것을 확인
DataDog Agent Log 확인
datadog 가이드에 있는대로 작업을 진행했으나 datadog와 연결이 안되는 상황이 지속되었다.
Private subnet ec2에 설치한 datadog agent의 로그를 체크해 보기로 하였다.
로그 파일 위치는 https://docs.datadoghq.com/agent/guide/agent-log-files/?tab=agentv6v7 에서 확인 할 수 있었다.
- /var/log/datadog/agent.log 에서 아래와 같은 로그를 확인 할 수 있었다.
- 7-33-1-app.agent.datadoghq.com: no such host 문구가 반복되는 것을 확인 할 수 있다.
2022-02-20 02:41:36 UTC | CORE | ERROR | (pkg/forwarder/worker.go:183 in process) | Error while processing transaction: error while sending transaction, rescheduling it: Post "https://7-33-1-app.agent.datadoghq.com/intake/?api_key=***************************bc289": dial tcp: lookup 7-33-1-app.agent.datadoghq.com: no such host
2022-02-20 02:41:36 UTC | CORE | ERROR | (pkg/forwarder/worker.go:183 in process) | Error while processing transaction: error while sending transaction, rescheduling it: Post "https://7-33-1-app.agent.datadoghq.com/api/v1/series?api_key=***************************bc289": dial tcp: lookup 7-33-1-app.agent.datadoghq.com: no such host
2022-02-20 02:41:36 UTC | CORE | ERROR | (pkg/forwarder/worker.go:183 in process) | Error while processing transaction: error while sending transaction, rescheduling it: Post "https://7-33-1-app.agent.datadoghq.com/api/v1/check_run?api_key=***************************bc289": dial tcp: lookup 7-33-1-app.agent.datadoghq.com: no such host
2022-02-20 02:41:36 UTC | CORE | ERROR | (pkg/forwarder/worker.go:179 in process) | Too many errors for endpoint 'https://7-33-1-app.agent.datadoghq.com/intake/?api_key=***************************bc289': retrying later
2022-02-20 02:44:11 UTC | CORE | ERROR | (pkg/forwarder/worker.go:183 in process) | Error while processing transaction: error while sending transaction, rescheduling it: Post "https://7-33-1-app.agent.datadoghq.com/intake/?api_key=***************************bc289": dial tcp: lookup 7-33-1-app.agent.datadoghq.com: no such host
2022-02-20 02:44:11 UTC | CORE | ERROR | (pkg/forwarder/worker.go:183 in process) | Error while processing transaction: error while sending transaction, rescheduling it: Post "https://7-33-1-app.agent.datadoghq.com/api/v1/check_run?api_key=***************************bc289": dial tcp: lookup 7-33-1-app.agent.datadoghq.com: no such host
로그를 확인하다 보니 7-33-1-app.agent.datadoghq.com: no such host 이라는 문구가 반복적으로 나타나는 것을 확인 할 수 있었다.
일반 PC환경에서 nslookup 명령을 사용하여 정보를 조회해 봤더니
7-33-1-app.agent.datadoghq.com 주소가 metrics.agent.datadoghq.com 이곳으로 이동한다는 것을 확인 할 수 있었다.
그래서 rouete 53에 7-33-1-app.agent.datadoghq.com를 추가하고 jeongdo-datadog-metric을 value로 설정을 하였다.
다시 테스트 해 보니 제대로 동작이 되었음을 확인하였다.