ec2 안에서 도커 컨테이너를 실행시키면 컨테이너 내부에 로그가 쌓이게 됩니다. 하지만 컨테이너가 중지되면 로그도 날아가기 때문에 이를 위해서 AWS에서 제공하는 cloudWatch를 활용하여 로그를 관리할 수 있습니다.
Docker Container를 실행시키고 CloudWatch를 통한 로그 백업을 간단하게 실습해보는 스터디 내용을 정리해 보았습니다.
1. EC2에서 CloudWatch 서비스를 액세스할 권한 부여
1) CloudWatchFullAccess 역할 생성
CloudWatch를 사용하기 위해서는 가장 먼저 EC2에서 CloudWatch에 서비스를 액세스 할 권한을 부여해주어야 합니다. 그러기 위해서는 먼저 IAM에서 CloudWatchFullAccess라는 역할을 생성해주어야 합니다.
CloudWatchFullAccess는 CloudWatch에 대한 AWS 관리형 정책으로써 CloudWatch의 작업 및 리소스에 대한 전체 액세스 권한을 부여합니다.
위와 같이 항목을 선택한 후 권한 추가 단계로 이동합니다.
CloudWatchFullAccess 권한 정책을 선택합니다.
역할 이름을 지정하고 역할을 생성합니다.
역할 생성 완료!
2) CloudWatch 로그 그룹 생성
로그 그룹은 동일한 소스를 공유하는 로그 이벤트 시퀀스 입니다. 로그 보존 기간, 모니터링 및 액세스 제어 등의 설정을 공유하는 그룹입니다. 로그 그룹에서 포함할 수 있는 스트림의 수에는 제한이 없으며, 만약 여러 실행 파일에서 동일한 로그 스트림을 사용 시, 파일이 덮어씌워지는 것이 아니라 누적되는 형식으로 보관됩니다.
로그 그룹 생성 시 보존 설정에서 로그 관리 기간을 설정할 수 있습니다.
로그 그룹 생성 완료!
3) EC2와 로그 그룹 연동하기
EC2 대시보드에서 적용할 인스턴스를 선택하고 우측 상단에 작업 > 보안 > IAM 역할 수정 으로 이동합니다.
생성한 로그 그룹을 선택하고 저장해주면 EC2에서 CloudWatch에 액세스할 권한이 부여됩니다.
2. CloudWatch에서 로그 확인하기
EC2에서 아래의 명령어를 실행합니다.
sudo docker run -i -t --log-driver=awslogs --log-opt awslogs-region=ap-northeast-2 --log-opt awslogs-group=[로그 그룹 이름] --log-opt awslogs-stream=[로그스트림이름] [실행할 도커 이미지]
도커 컨테이너로 서버를 실행시킴과 동시에 지정한 log stream으로 로그가 백업된 것을 확인할 수 있습니다.
'Dev > AWS' 카테고리의 다른 글
Travis CI,CodeDeploy,S3,Nginx로 EC2에 무중단 배포하기(2) - Travis CI,S3,CodeDeploy 연동 (0) | 2022.04.06 |
---|---|
Travis CI,CodeDeploy,S3,Nginx로 EC2에 무중단 배포하기(1) - Travis CI,S3 연동 (0) | 2022.04.05 |
[AWS]AWS EC2 인스턴스에 Postgresql 설치 + 스프링부트 연동하기(posrgresql+JPA) (0) | 2022.02.12 |
[AWS] EC2 생성하고 서버배포하기 (0) | 2022.02.10 |
[AWS] Security Group(보안그룹) (0) | 2022.01.04 |
댓글