서론
CloudWatch Agent (이하 CW Agent)를 사용해서 EC2 Instance의 상세 메트릭을 CloudWatch로 전송하고있다.
CW Agent 설정에 대해 간단하게 정리
CW Agent가 메트릭을 CW로 전달하기 위해서는 HTTPS에 대한 Internet Outbound가 필요하다.
EC2 Instance의 Internet Outbound를 제거한동안 메트릭이 끊긴것을 볼 수 있다.
해결 방법
역시 인터넷으로의 Outbound 없이 AWS Service간 통신하기 위해선 VPC Endpoint가 해결방법이다.
EC2 Instance가 속한 VPC에 Endpoint를 생성해줘야한다. 설정은 아래와 같이 한다.
•
Endpoint : com.amazonaws.region.monitoring
•
VPC : EC2 Instance가 포함된 VPC에 서브넷은 아무거나 상관없다. 어차피 Local Routing으로 통신됨 (Private IP 개수만 신경쓰면 될 듯)
•
SG : EC2 Instance로부터 HTTPS(443) 인바운드가 허용되어있어야한다. (VPCE의 SG Outbound 역시 인터넷으로 열려있지 않아도 상관없다.)
•
Private DNS : 꼭 활성화해주자. 이를 활성화 하기 위해서 VPC가 DNS를 사용하도록 설정되어있어야한다.
•
Policy : 최소 cloudwatch:PutMetricData 권한이 부여되어야한다.
#최소권한
{
"Statement": [
{
"Sid": "PutOnly",
"Action": [
"cloudwatch:PutMetricData",
],
"Effect": "Allow",
"Principal": "*",
"Resource": "*"
}
]
}
JSON
복사
이제 Instance의 Internet Outbound를 제거하고 정상적으로 메트릭이 수집되는지 확인해보자.
아까 메트릭이 끊긴 시점 이후로 Internet Outbound 없이도 정상적으로 수집중이다.
성공적으로 Internal CW metric 전송에 성공했다.
+ 추가로 로그까지 Internal로 기록하고싶다면 아래 VPCE를 생성해야한다.
•
Endpoint : com.amazonaws.region.logs