CloudWatch Logs설치하여 EC2의 로그를 저장하기

2022.04.19

소개

안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 CloudWatch Logs설치하여 EC2의 로그를 저장해보도록 하겠습니다.

CloudWatch Logs란?

Amazon EC2 인스턴스, AWS CloudTrail, Route 53 및 다른 원본에서 시스템, 애플리케이션 및 사용자 지정 로그 파일을 모니터링, 저장 및 액세스할 수 있습니다.

확장성이 뛰어난 단일 서비스에서 사용하는 모든 시스템, 애플리케이션 및 AWS 서비스에서 로그를 중앙 집중화 하며 로그를 쉽게 보거나 특정 오류 코드 또는 패턴이 있는지 검색하고, 특정 필드를 기반으로 필터링 하여 향후 분석을 위해 안전하게 보관할 수 있습니다.

기능에 대해서

  • 로그 데이터 쿼리
  • Amazon EC2 인스턴스에서 로그 모니터링
  • AWS CloudTrail 기록 이벤트 모니터링
  • 로그 보존
  • 로그 데이터 아카이브
  • Route 53 DNS 쿼리 로그

요금에 대해서

EC2인스턴스에 CloudWatch Logs를 설치하고 저장해보기

사전준비

  • VPC x1
  • Public Subnet x1
  • Public Routing Table x1
  • InternetGateway x1
  • EC2 (Apache 등 미들웨어 설치) x1
  • IAM Role (Policy : CloudWatchAgentServerPolicy) x1

EC2인스턴에서 CloudWatch Logs 설치

로그를 내보내기 위해 CloudWatch Logs를 설치 해보도록 하겠습니다.

sudo su -

먼저 루트 유저로 변경해줍니다.

sudo yum update -y

yum을 업데이트 해줍니다.

sudo yum install -y awslogs

CloudWatch Agent를 설치해줍니다.

로그 내보내기 설정

설치가 정상적으로 완료가 되었다면 아래의 설정을 통해 원하는 로그를 내보내도록 하겠습니다.

/etc/awslogs/awslogs.conf

위의 경로 에서 「awslogs.conf」 의 파일을 편집합니다. 편집 명령어는 vi awslogs.conf 입니다.

[/var/log/httpd/access_log]
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/httpd/access_log
buffer_duration = 60000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/httpd/access_log

[/var/log/httpd/error_log]
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/httpd/error_log
buffer_duration = 60000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/httpd/error_log

위의 코드를 추가 해주시면 됩니다. (Apache의 로그를 내보내고 있습니다.)

위의 코드에 대해 간단히 설명 하자면

  • datetime_format : 타임스탬프가 로그에서 추출되는 방법을 지정합니다.
  • file : CloudWatch Logs에 푸시하고 싶은 로그 파일을 지정합니다.
  • buffer_duration : 로그 이벤트를 일괄 처리하는 기간을 지정합니다.
  • log_stream_name : 대상 로그 스트림을 지정합니다.
  • initial_position : 데이터 읽기를 시작할 지점을 지정합니다.
  • log_group_name : 대상 로그 그룹을 지정합니다.

자세한 내용은 아래의 링크에서 확인해 주세요.

/etc/awslogs/awscli.conf

위의 경로에서 「awscli.conf」[default] 아래의 region 을 변경하여 로그가 저장되는 리젼을 변경 해줍니다. 편집 명령어는 vi awscli.conf 입니다.

(! 기본적으로 us-east-1 로 되어있기 때문에 로그의 저장소가 버지니아 북부로 설정 되어 있습니다.)

logging 활성화 해보기

위의 설정이 왼료되었으면 다시 home/ec2-user 로 이동합니다.

「Amazon Linux2가 아닌경우」

sudo service awslogs start
sudo chkconfig awslogs on

「Amazon Linux2인 경우」

sudo systemctl start awslogsd
sudo systemctl enable awslogsd.service

위의 명령어들을 시작하여 logging을 활성화 해줍니다.

로그가 잘 들어 왔는지 확인하기 위해 서비스에 「CloudWatch」 를 검색한후 「로그 그룹」 탭 에서 각각의 로그를 확인 해주세요.

  • /var/log/messages
  • /var/log/httpd/access_log
  • /var/log/httpd/error_log

마무리

이번 블로그에서는 CloudWatch Logs를 설치하여 EC2의 로그를 저장해보았습니다. 평소에 EC2의 로그를 수집하고 싶으신 분들께 조금이나마 도움이 되었으면 좋겠습니다.

참고 자료

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !