Simple is IT, 누구나 보고 누구나 깨닫는 IT

Docker Container Logging_awslogs(4/4) 본문

Simple is IT/Cloud & Container

Docker Container Logging_awslogs(4/4)

currenjin 2020. 7. 18. 18:20

Container Logging

도커에서 컨테이너 로그를 수집할 때 각종 드라이버를 통해 다양한 방법으로 컨테이너의 로그를 수집할 수 있죠.

이번에는 도커에서 제공하는 로깅 드라이버 중 awslogs를 사용해볼거에요!

 

 

awslogs

AWS(Amazon Web Service)에서는 로그 및 이벤트 등을 수집하고 저장해 시각적으로 보여주는 CloudWatch를 제공합니다!

그렇기에 만약 도커를 AWS EC2에서 사용하고 있다면 다른 도구를 별도로 설치할 필요 없이 컨테이너에서 드라이버 옵션을 설정하는 것만으로 드라이버를 사용할 수 있죠.

 

구성을 위한 순서는 아래와 같아요.

1. CloudWatch에 해당하는 IAM 권한 생성
2. Log Group 생성
3. Log Group에 LogStream 생성
4. CloudWatch의 IAM 권한을 사용할 수 있는 EC2 인스턴스 생성과 로그 전송

 

CloudWatch를 사용하기 위해선 AWS 계정이 필요합니다! 가입은 간단하기에 따로 설명은 하지 않을게요.

 

1. CloudWatch에 해당하는 IAM 권한 생성

[IAM]를 클릭합니다.

 

사이드바의 [역할]탭을 클릭하고 [역할 만들기]를 통해 새로운 IAM 권한을 생성해줄게요.

 

EC2를 선택한 뒤 [다음 : 권한]을 클릭해주세요.

 

정책 필터에서 CloudWatchFullAccess를 입력해 선택해주고 [다음 : 태그]를 클릭해줄게요.

태그 항목에서는 키와 값을 입력할 수 있는데, 선택사항이므로 저는 패스하겠습니다. [다음 : 검토] 클릭

 

IAM 역할의 이름을 지정해주고 [역할 만들기]를 클릭해 새로운 역할 생성을 마무리합니다.

 

 

2. Log Group 생성

[관리 및 거버넌스]에서 [CloudWatch]를 클릭할게요.

 

사이드바에서 [로그 그룹]을 클릭한 뒤 [로그 그룹 생성]을 통해 새로운 로그 그룹을 만들어봅시다.

 

 

3. Log Group에 LogStream 생성

생성된 로그 그룹의 이름을 클릭해 로그 스트림을 생성합니다.

[로그 스트림] 탭의 [로그 스트림 생성]을 클릭해주고 이름을 지정해줍시다.

 

생성은 했지만 아직 컨테이너에 대한 로그를 전송하도록 설정하진 않았기에 저장되어있진 않아요.

 

 

4. CloudWatch의 IAM 권한을 사용할 수 있는 EC2 인스턴스 생성과 로그 전송

EC2 인스턴스에서 아까 생성했던 IAM 권한을 추가해야해요.

[단계 3: 인스턴스 세부 정보 구성]에서 IAM 역할을 지정해줍시다.

 

IAM 권한을 사용할 수 있도록 설정한 EC2 인스턴스에서 옵션을 추가해 컨테이너를 생성해봐요.

docker run -d \
> --log-driver=awslogs \
> --log-opt awslogs-region=ap-northeast-2 \
> --log-opt awslogs-group=logs \
> --log-opt awslogs-stream=logstream \
> ubuntu:16.04 \
> echo 'Log test!!!'

logging driver로는 awslogs(CloudWatch)를 사용하고, Log Group과 Log Stream을 알맞게 설정해줍시다.

Region은 ap-northeast-2(서울)로 지정해요.

 

CloudWatch에 확인하고자 하는 Log가 정상적으로 수집되었음을 알 수 있습니다!

 

이렇게 수집한 로그를 통해 AWS에서는 다양한 작업을 할 수 있습니다.

효율적인 운영과 관리를 진행할 수 있어 더욱 편하겠군요!

Comments