DevOps

AWS CloudWatch - EC2 어플리케이션 로그 저장하기

팅리엔 2021. 7. 25. 17:39

로깅

  • 인프라 모니터링
  • 클라이언트 요청 모니터링 : 의도한 대로 요청을 보내고 있는가, 공격 시도가 있는가, 얼마만큼의 요청이 들어오는가
  • 애플리케이션 모니터링 : 에러가 있는가, 어떤 부분이 병목을 일으키고 있는가
  • 데이터 모니터링 : 올바른 형태로 데이터가 저장되고 있는가, 어느 속도로 저장되고 있는가

 

AWS Auto Scaling을 이용하면 인스턴스는 계속해서 실행되고 종료된다. 여러개의 인스턴스에서 발생하는 로그를 한 곳에 모아 확인해야 하기도 하고, 인스턴스가 종료되면 내부에 저장된 로그 데이터는 모두 사라지기 때문에 외부에 로그를 저장해야 한다.

 

CloudWatch

AWS 자원 모니터링 및 관리 서비스

AWS 서비스의 모든 로그와 지표 정보를 수집해 한 눈에 볼 수 있도록 시각화해주며, 이 수집된 값들을 이요해 자동화 작업을 수행할 수 있게 해주는 관리 서비스이다.

 

기본적으로 제공되는 지표들

  • CPU 사용량
  • 디스크 사용량
  • 로드밸런서의 응답 시간, 총 요청 수, 5XX HTTP 응답 수
  • 네트워크 트래픽
  • DB 레플리카 렉 시간
  • 캐시 hit/miss 비율

 

CloudWatch Logs

CloudWatch 기능 중 로그를 관리하는 기능

CloudWatch 에이전트가 로그를 모니터링해서 CloudWatch Logs로 전송한다.

CloudWatch 에이전트를 통해 EC2에서 발생한 로그, Lambda, Route 53 DNS 쿼리 등의 로그를 저장할 수 있다.

CloudWatch 에이전트 설정 파일을 이용하여 인스턴스 내의 어떤 파일을 저장할지 지정할 수 있다.

 

  • 로그 이벤트
  • 로그 스트림 : 동일 소스에서 기록된 로그 이벤트들의 모음
  • 로그 그룹 : 로그 스트림들의 모음

 


 

실습하기

1. CloudWatch IAM 역할 만들기

2. AMI 생성용 EC2 인스턴스에 역할 추가하기

* AMI 생성용 EC2 인스턴스의 IAM 역할과, 이 인스턴스의 이미지로 만드는 인스턴스의 IAM 역할은 별개이다.

 

3. AMI 생성용 EC2 인스턴스에 CloudWatch Agent 설치하기

(1) EC2에 SSH로 접속하여 Agent를 설치한다.

sudo yum install amazon-cloudwatch-agent

/opt/aws/amazon-cloudwatch-agent 경로에 Agent가 설치된다.

 

(2) 설치 마법사를 실행한다.

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

* CollectD 질문에 No 선택

설정 파일 /opt/aws/amazon-cloudwatch-agent/bin/config.json가 생성된다.

 

(3) config.json 파일을 이용하여 Agent를 실행한다.

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json

 

(3) Agent가 실행되었는지 확인한다.

sudo sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

CloudWatch 서비스 [지표] 메뉴를 보면 [CWAgent] 네임스페이스가 추가되었음을 확인할 수 있다.

 

* CloudAgent Agent의 로그 파일 위치: /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

 

4. CloudWatch Logs 그룹 추가하기

CloudWatch 서비스 - [로그 그룹] 메뉴 - [로그 그룹 생성] 버튼

 

5. 로그 파일을 전송하도록 CloudWatch Agent 설정 변경하기

sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json

metrics와 같은 단계에 logs를 추가한다.

* 참고: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html

 

설정 파일을 변경하엿으므로 Agent를 재시작한다.

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json

 

6. 새로운 AMI 생성하기

이제 CloudWatch Agent가 설치된 EC2 인스턴스를 이용해 새로운 이미지를 생성한다.

 

7. 시작 템플릿 AMI 변경하기

(1) 시작템플릿의 이미지를 위에서 생성한 이미지로 변경하여 새로운 버전의 시작템플릿을 생성한다.

+ CloudWatch Agent를 위한 IAM 정책이 추가되어야 한다.

 

(2) Auto Scaling 그룹의 인스턴스 새로고침을 시작한다.

* 새 AMI 또는 새 사용자 데이터를 지정하는 새 시작 템플릿 또는 시작 구성이 있는 경우, Auto Scaling 그룹을 업데이트하기만 하면 새 시작 템플릿 또는 시작 구성을 지정할 수 있다.

* 각 인스턴스는 먼저 종료된 후 교체되므로 Auto Scaling 그룹 내에서 사용할 수 있는 용량이 일시적으로 감소한다.

 

8. 확인하기

다음과 같이 서버에 있는 로그 파일이 저장된 것을 확인할 수 있다.

인스턴스가 여러개라 스트림이 여러개인 경우에도 [Search all] 버튼을 눌러 그룹을 대상으로 모든 스트림을 확인하거나 검색할 수 있다.

 


+ 서버 시간 맞추기

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date