본문 바로가기

Management

[Tip] AWS Private Subnet에서 CloudWatch Agent 연결 Error 해결하기

반응형

안녕하세요 서후아빠입니다. ^_^

이번 세션은 Private subnet에 위치한 EC2의 로그를 수집하기 위해 Cloudwatch Agent를 설치하였는데 Cloudwatch에서 Log 수집이 되지 않는 상황에 대해서 조치하는 방법을 알아보도록 하겠습니다.


Cloudwatch Agent 연결 Error

EC2에 CloudWatch Agent 설치 후, 로그가 수집되지 않는 증상
로그를 확인해보면 통신이 안된다는 메시지 출력

sudo tail -f /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
2022-06-20T08:58:38Z E! cloudwatch: code: RequestError, message: send request failed, original error: Post "https://monitoring.ap-northeast-2.amazonaws.com/": dial tcp 52.95.194.135:443: i/o timeout
2022-06-20T08:58:38Z E! cloudwatch: code: RequestError, message: send request failed, original error: Post "https://ec2.ap-northeast-2.amazonaws.com/": dial tcp 52.95.194.135:443: i/o timeout
Log를 보면 2개의 URL에 대해서 접근이 실패하였다고 확인이 됩니다. 
  - https://monitoring.ap-northeast-2.amazonaws.com

  - https://ec2.ap-northeast-2.amazonaws.com 

기본적으로 Cloudwatch는 별도 설정이 없으면 Public으로 통신하게 설계가 되어 있습니다. 때문에 Private Subnet에서 인터넷 통신이 가능하도록 구성되어 있지 않으면 Cloudwatch Agent 동작이 안됩니다. 
이를 해결하기 위해서는 Cloudwatch Endpoint를 생성해 주어야 합니다.

조치 방법

VPC > Endpoints > Create endpoint

구분 Endpoint settings Service settings (리전 주의) VPC
monitoring Name : cw-monitoring-ep
Service category : AWSservice
com.amazonaws.ap-northeast-2.monitoring VPC : 엔드포인트 생성할 VPC 선택
Subnet : 엔드포인트 생성할 Subnet 선택
ec2 Name : cw-ec2-ep
Service category : AWSservice
com.amazonaws.ap-northeast-2.ec2 VPC : 엔드포인트 생성할 VPC 선택
Subnet : 엔드포인트 생성할 Subnet 선택

EC2에서 CloudWatch Agent 재구동 후, 로그 확인 

sudo systemctl restart amazon-cloudwatch-agent.service
sudo tail -f /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
반응형