티스토리 뷰

반응형

 

ECS 태스크 설정에서 CloudWatch 적용을 걸고 서비스를 실행시키게 되면, EC2의 경우 로그적재가 서버에 자동으로 됩니다. (logback-spring.xml에 설정된 내용처럼) 하지만 Fargate의 경우 로그를 확인할 수 있는 서버가 존재하지 않기 때문에 AWS CloudWatch 서비스를 이용하여야 합니다. 오늘은 Fargate 이용중인 서버의 로그 보는 법을 알아보고자 합니다.

 

1. ECS 만으로는 보기 불편한 로그 시스템

가장 먼저 로그 시스템을 볼 수 있는 방법 중 ECS 자체 내에서 로그를 확인하는 법에 대해 설명드리고자 합니다. 

클러스터의 상세 화면

 

클러스터 리스트 중 하나의 클러스터로 들어와서 로그를 확인하는 방법부터 알아보겠습니다. 현재 클러스에서 돌아가고 있는 서비스를 클릭합니다. 그리고 서비스의 상세 화면이 나오게 되는데 '상태 및 지표' 화면에서는 CPU의 사용률과 메모리 사용률을 확인할 수 있습니다.

 

여기서 '로그' 탭을 클릭합니다. 

 

그럼 이제 로그가 한 줄 단위로 계속 출력되는 것을 볼 수 있습니다. 또는 여기서 '구성 및 태스크' 탭을 클릭하여 넘어간 뒤 오토스케일링 아래 부분에 태스크용 컨테이너를 확인하는 부분에서도 로그를 확인할 수 있습니다.

구성 및 태스크에서 오토 스케일링 부분

 

 

여기서 태스크를 클릭한 후, '로그' 탭을 클릭하여서도 같은 결과를 볼 수 있습니다. 

태스크의 로그

하지만 이렇게 로그를 확인하는 방법은 불편한 것도 있고, 불편한 점을 개선하기 위해 CloudWatch 를 사용합니다. 태스크를 생성하는 시점에 로그 정책을 어떻게 할 것인지 설정할 수 있습니다. (없는 경우 '개정 업데이트'를 통해 아래처럼 추가가 가능합니다.) 

태스크의 로그 구성 옵션

이번 로그 구성에서는 기본적으로 구성된 로그 시스템을 그대로 활용해보고자 합니다. 

 

개정 업데이트 화면에서 로그 설정하기

 


 

2. CloudWatch 들어가기

가장 먼저 클라우드워치로 들어가기 위해 아래 링크로 이동합니다. 

https://ap-northeast-2.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-2#home: 

 

https://ap-northeast-2.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-2#home:

 

ap-northeast-2.console.aws.amazon.com

그리고 사이드바에서 '로그 > 로그 그룹'으로 들어갑니다. 그리고 task이름으로 검색합니다.

이제 task를 클릭하여 들어갑니다. 

  • task : 태스크에서 일어난 애플리케이션 단의 로그를 확인합니다. 로그 스트림이라고 해서 실시간으로 로그를 확인할 수 있는 시스템을 제공해줍니다.
  • cluster : 로그 스트림이 없습니다. 

로그 스트림 부분

 

이제 여기에서 로그 스트림 중 최상단에 위치한 것을 선택합니다. 내가 로그를 생성한 적이 없는데 왜 로그 스트림이 많이 쌓여있지..? 여기서는 태스크가 시작되고 종료된 모든 기록을 적재합니다. 실행이 되다가 종료가 된다면 무슨 이유로 부팅이 되다가 종료가 되었는지도 보여지고, 정상적으로 작동하고 있는 서비스의 경우 실시간으로 적재가 되는 것도 확인이 가능합니다.

 

a. 정상적으로 작동하는 서비스의 로그

계속 보이는 로그

 

문제는 크게 없어보이는 WARN 레벨의 경고 로그만 쌓이는 CloudWatch 화면입니다. 재개를 누르는 경우 실시간 로그 스트림이 보이게 됩니다. 

 

 

URI 요청이 와서 INFO 레벨로 쌓인 로그도 존재합니다. SQL 쿼리도 INFO 레벨로 보이게 설정하였다면 보입니다. 😎

 

2. 비정상으로 종료된 로그 

이제 비정상으로 강제종료된 로그를 한 번 보겠습니다. 

처음에는 Spring 글자가 보이며 제대로 출력되는 로그가 보입니다.
하지만 애플리케이션 구동이 실패하고 종료합니다.

 

로그를 보아하니 spring.database.url 이라는 환경 변수 값이 매핑되지 않아 프로그램이 종료되는 것으로 확인할 수 있습니다. 이렇게 로그를 보고 애플리케이션이 정상적으로 돌아갈 수 있도록 확인하는데 CloudWatch를 사용하는 것이 용이하다는 것을 알게 되었습니다.

다음에는 S3로 로그를 내보내는 실습을 한 번 더 진행해보고, S3에서도 로그를 확인할 수 있는 방법을 찾아볼까 합니다. 🤩

반응형
댓글
공지사항