문제점 식별
실제 개발한 서비스를 QA하는 과정에서 에러나는 부분이나 문제점을 docker logs 만으로 확인하기에는 불편하다고 느꼈다. 그래서 로그 분석 및 관리 그리고 경보까지 제공해주는 AWS CloudWatch Logs 서비스를 사용해보고 적용해보았다.
ps : IAM 권한 및 역할 설정 꼭 확인하자!!!
환경 구성
- EC2 : ubuntu 22.x
- Docker : docker version 20.x
CloudWatch 로그 그룹/로그스트림 생성
AWS cloudWatch 검색 → [로그 클릭] → [로그 그룹 클릭] → [로그 그룹 생성]

- 로그 그룹 이름 : 원하는 이름으로 지정
- 보존 설정 : 기본값(만기없음), 본인은 7일로 설정함 왜냐하면 로그를 계속 쌓으면 추가 비용 발생할 수도 있기 때문.
- [생성] 클릭
로그 스트림 생성

- [로그 그룹] 클릭
- [로그 스트림 생성] 클릭 → 원하는 이름으로 작성
IAM 권한 설정
정책 설정 및 액세스 키 발급
- [IAM] → [사용자] → [권한 추가] → [CloudWatchLogsFullAccess] 검색 후 권한 추가 (정책 설정 완료)
- 액세스 키 및 시크릿 키 발급 받기
역할 설정
- [IAM] → [역할] → [역할 생성] 클릭
- EC2에 Docker로 서버 배포하였기에 [AWS 서비스] 선택 후 사용 사례 탭에서 [EC2] 클릭 후 [다음] 버튼 클릭

권한 추가
- [CloudWatchFullAccess] 권한 선택 후 다음 클릭
- [역할 생성 이름] 에 원하는 역할 이름 적기 ( 본인은 EC2-CloudWatch )

역할 확인

Docker 설정
스크립트 사용 및 환경파일 생성
sudo vim cloudwath.sh 생성 (굳이 이렇게 안해도 됨)
sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo touch /etc/systemd/system/docker.service.d/aws-credentials.conf
echo "[Service]" | tee -i /etc/systemd/system/docker.service.d/aws-credentials.conf
echo "Environment=\"AWS_ACCESS_KEY_ID=위에서생성한AccessKey\"" | sudo tee -i /etc/systemd/system/docker.service.d/aws-credentials.conf
echo "Environment=\"AWS_SECRET_ACCESS_KEY=위에서생성한SecretKey\"" | sudo tee -i /etc/systemd/system/docker.service.d/aws-credentials.conf
- 저장 후
chmod 755 cloudwath.sh권한 주기 cd /etc/systemd/system/docker.service.d/이동하여aws-credentials.conf파일 열기- AWS에서 발급 받았던 액세스 키와 시크릿 키 적어준다.
Environment="AWS_ACCESS_KEY_ID=<AWS 액세스 키>"
Environment="AWS_SECRET_ACCESS_KEY=<AWS 시크릿 키>"
Docker 재실행
$ sudo systemctl daemon-reload
$ sudo service docker restart
docker-compose.yml 파일 수정 후 docker compose up 실행
version: "3"
services:
api:
image: <your server image>
restart: always
ports:
- "8080:8080"
# aws cloudWatch log 설정
logging:
driver: awslogs
options:
awslogs-group: snackr-back # 로그 그룹 이름
awslogs-region: ap-northeast-2 # 리전 설정
awslogs-stream: snackr-api-logs # 로그 그룹 스트림 이름
결과
원하는대로 결과가 잘 나온다!!

참고자료
Docker log를 AWS CloudWatch로 보내기
Docker log를 AWS CloudWatch로 보내기
부제 : Docekr awslogs driver 사용하기 본 내용은 환경은 Ubuntu 18.04 docker version : 19.03.6 에서 테스트된 내용입니다. docker 전달할 IAM 생성 AWS 에서 IAM Programmatic access 유저를 생성 합니다. 해당 유저의 권
ch-visu4l.tistory.com
Docker Container Logging - awslogs
Docker Container Logging - awslogs
수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다 개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다. 잘못된 부분이 있거나 질문사항은 댓글로 남겨주시
mingyucloud.tistory.com
'AWS' 카테고리의 다른 글
| [AWS] Route53 사용하지 않고 SSL 인증서만 사용하는 방법 With NameCheap (0) | 2023.04.18 |
|---|---|
| [Route53] 네임서버 및 SSL 구축 방법 (0) | 2023.04.14 |
| [ElasticBeanStalk] Dockerrun.aws.json 컨테이너 자동으로 run 안되는 현상 (0) | 2023.04.14 |
| [Elastic Beanstalk]에서 Private DockerHub 이미지 가져오기 및 CI/CD 없이 배포하기 (0) | 2023.04.14 |
| EC2에 스프링부트 배포 (0) | 2023.04.04 |