오늘은 회사에서 Window OS의 EC2 인스턴스에 CloudWatch Agent 설치 중 오류가 발생했다.
문제는 이렇다 EC2 인스턴스에 Agent를 설치하기 위해 패키지를 받고 패키지 설치가 완료 된 후 명령어를 실행해 Agent가 Running 상태인 것 까지 확인 했는데 CWAgent 라는 Default 네임 스페이스로 CloudWatch 에서 메트릭이 수집이 되지 않았다.
총 6개 정도의 대상에 Agent를 설치 했으며, 1개를 제외한 나머지 대상은 같은 Account에 서버가 구성 되어 있다. (멀티 Account 환경)
설치 과정에서 발생한 로그를 확인 해보니
ec2tagger processor required because append_dimensions is set
cloudwatch agent install pipeline hostDeltaMetrics has no receivers
이러한 내용의 로그가 남아서 해당 키워드로 구글 검색을 했지만 해결 할 수가 없었다.
일단 같은 Account 내에 있는 5개의 EC2를 모두 확인 해본 결과 EC2에 연결되어 있는 Role에 CloudWatchAgentServerPolicy 정책이 모두 들어 있어 Role 문제는 아니라고 생각했다. (여기서 이랬음 안됐는데...)
허나 다른 Account 내에 있는 EC2는 Role에 정책이 빠져 있어서 정상적으로 메트릭이 수집이 안되었었다....
이것 때문에 시간을 꽤나 많이 잡아 먹은 듯 하다 ㅠㅠ 왜냐면 Role이 있어서 서버 내부에서 이것저것 로그 체크하고 config.json 파일도 변경 해보고 Agent start/stop, 재설치 등 시간을 너무 많이 잡아 먹었다...
근데 동일 Account에 있는 5개는 왜 안됐지? 라는 생각이 들고 네트워크 문제라는 생각이 들었다.
Agent도 결국 CloudWatch에 메트릭이 보이려면 통신이 되어야 하기 때문에 (Agent 특성 상 외부로 특정 포트를 이용해 통신 해야함) 아웃 바운드 통신이 안열려 있을 가능성이 크다고 생각했다.
그리고 Agent의 로그를 체크할 수 있는 방법이 없을 지 확인을 해보고 로그를 체크해본 결과 특정 공인 IP 대역의 443 포트에 통신이 안되고 있는 로그를 발견했다. (사실 문제 발생 시 로그를 최우선으로 체크 해봤어야 했는데 이것도 아쉽다.)
로그는 파워쉘 프롬프트에서
Get-Content $Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\amazon-cloudwatch-agent.log
로 확인 가능하다
위에서 발생한 로그가 이런 이유 때문에 발생했는 지는 정확히 모르겠으나, 해결 후 해당 로그는 남지 않았다.
결국 문제에 대한 해결책은 이랬다.
- EC2에 연결되는 IAM 롤 정책 문제
- 네트워크 문제
조금 더 원론적으로 접근 했으면 해결이 빨랐을텐데 아쉽다.
윈도우 서버라 환경이 익숙치 않았다는 변명을 해본다...
Docs를 다시 확인해보니 위와 같이 인스턴스에 아웃바운드 인터넷 액세스 권한이 있어야 된다고 명시되어 있다.
문서를 더 꼼꼼히 확인해봐야겠다.
'기타 > Problem Solve' 카테고리의 다른 글
Lambda Python Teams http request error (0) | 2023.08.28 |
---|---|
CodeCommit 403 error 해결 (0) | 2023.08.07 |
S3 rb 트러블슈팅 (0) | 2023.06.13 |