Wisdom’s Cloud

[AWS] 29. Amazon CloudWatch 본문

AWS/Beginner

[AWS] 29. Amazon CloudWatch

지혜로운지혜쓰 2022. 3. 24. 12:29

구분 내용
서비스명 Amazon CloudWatch
설명 AWS 및 온프레미스에서 AWS 리소스 및 애플리케이션 관찰 가능
주요 특징 - 여러 애플리케이션 및 인프라의 지표 및 로그, 이벤트 통합 관리 및 모니터링
- 자동 대시보드 및 지표를 통한 인프라의 운영 가시성과 통찰력 제공
- 손쉽게 온프레미스와 클라우드에서 지표 수집 기능 제공
- 운영 성능 및 리소스 최적화에 대한 경보 설정 및 작업 자동화 수행 가능
- 로그 탐색 및 분석, 시각화를 통해 운영 가시성 확보
프리티어(Free Tier) - 사용자 정의 지표 10개 및 경보 10개, API 요청 1백만 개, 로그 데이터 수집 5GB
- 로그 데이터 아카이브 5GB, 월별 최대 50개의 지표를 제공하는 대시보드 3개 (최초 이후에도 Free Tier 사용 가능)

 

 

CloudWatch의 기본 관리 구조
  • CloudWatch는 네임스페이스 → 지표 → 차원의 구조로 구성되며, AWS 리소스와 자원으로부터 수집된 데이터를 시계열로 분류하여 저장하게 된다.
  • 이에 대한 통계 값을 사전에 정의된 Min, Max, Sum, Average, SampleCount, Percentile와 함께 적합한 통계 지표 값을 선택하여 수치를 확인할 수 있다.

 

 

CloudWatch 지표
  • 지표는 시스템의 성능에 대한 데이터 값을 나타낸다. AWS 대부분의 서비스는 개별 서비스별 주요 지표를 가지고 있으며, 시스템의 데이터를 CloudWatch로 전달하게 된다.
  • 이러한 지표 중 기본으로 제공되는 지표와 세부 정보를 남기는 경우 별도의 비용이 과금되는 지표가 있다. 개별 서비스별로 사용 가능한 지표를 확인하기 위해서는 AWS 콘솔을 통해 CloudWatch에서 사용 가능한 지표를 확인할 수 있다.

 

 

CloudWatch Event
  • CloudWatch Event는 AWS의 주요 리소스에 대한 변경 사항에 대해 실시간 스트림을 활용하여 EC2 인프라 관리를 자동화하고, Amazon 인공지능 기반 보안 서비스인 GuardDuty와 연계를 통해 보안 관제 및 보안 이슈에 대한 처리 및 대응을 자동화할 수 있다.
  • 즉, 리소스의 변화를 실시간으로 인식할 수 있으며, 빠르게 사용할 수 있는 간단한 규칙을 통해 이벤트를 분류하고, 처리할 수 있는 대상으로 전달하여 다양한 방식으로 리소스 변화에 대해 빠르게 대응 가능한 체계를 만들 수 있다. 따라서 Cron, 정규식 등을 활용하여 특정 시간에 자동으로 수행할 수 있는 예약 작업을 통해 작업을 자동화할 수 있다.

 

 

CloudWatch Logs
  • CloudWatch Logs는 Amazon EC2, CloudTrail, Route53 등과 같은 AWS 리소스에 대한 로그 파일을 통해 시스템, 애플리케이션 로그 및 커스텀 로그를 통합 관리할 수 있으며, 이에 대한 모니터링을 수행할 수 있다.
  • 또한 통합된 로그에 대해 탐색, 분석 및 시간과할 수 있으며, 이를 통해 운영 중 발생될 수 있는 문제를 쉽게 해결할 수 있다.
  • CloudWatch Logs Insights는 클라우드 규모에서 작동하도록 설계된 완전 관리형 서비스로, 설치나 유지 관리가 필요하지 않으며, CloudWatch Logs에 저장된 대용량의 로그를 몇초 안에 처리하고 고속의 대화형 쿼리 및 시각화 기능을 제공한다.
  • CloudWatch Logs Insights를 통해 다양한 로그 형식을 처리할 수 있으며, JSON 기반 로그의 필드를 자동으로 인식하여 검색을 수행할 수 있다. 이전에는 로그 분석을 위해 별도의 3rd Party Tool을 활용하거나, 고가의 로그 분석을 위한 S/W를 구매햐야만 수행할 수 있었던 작업을 CloudWatch Logs Insights를 통해 손쉽게 수행할 수 있다.
  • CloudWatch Logs는 로그 수집 대상 시스템 또는 서버에 Log Agent를 설치하거나 EC2 Config에 설정을 통해 데이터 수집에 필요한 환경을 구성할 수 있다. 이렇게 수집된 로그는 CloudWatch를 통해 모니터링을 진행할 수 있고, 지정된 Rule에 따라 CloudWatch 알림을 통해 SNS, Lambda, SQS와 연계 수행할 수 있다.

 

 

실습: CloudWatch 지표 확인

 

1. 콘솔에 로그인한 후, [서비스] -> [관리 및 거버넌스] -> [CloudWatch] -> [모든 지표]로 이동하여 확인하는 지표의 네임스페이스를 선택한다.
2. 확인하고자 하는 지표를 선택한다.
3. 원하는 지표를 선택하거나, 검색에서 추가하여 그래프 지표를 확인할 수 있다.

 

 

실습: CloudWatch Event를 활용한 서버 모니터링

 

* CloudWatch Event를 활용하여 EC2 인스턴스의 상태에 대해 모니터링을 수행하고,

EC2 인스턴스의 상태가 변경되면 SNS를 활용하여 자동으로 이메일을 발송할 수 있도록 한다. *

 

1. [서비스] -> [애플리케이션 통합] -> [SNS] -> [주제]로 이동한 후, [주제 생성] 버튼을 클릭한다.
2. 주제 생성 페이지에서 [표준]을 선택하여 이름과 표시 이름을 입력한 후, [주제 생성] 버튼을 클릭한다.
3. 생성된 주제의 구독 탭에서 [구독 생성] 버튼을 클릭한다.
4. 구독 생성 페이지에서 프로토콜로 [이메일]을 선택하고, 엔드포인트에 본인의 이메일 주소를 입력한 후, [구독 생성] 버튼을 클릭한다.
5. 엔드포인트에 등록된 이메일로 발송된 메일을 확인한 후, Confirm subscription 링크를 클릭하여 SNS 구독에 대한 확인 작업을 완료한다.
6. [SNS] -> [구독]으로 이동하여 구독이 정상적으로 완료되었음을 확인한다.
7. CloudWatch Event가 EventBridge로 업그레이드되어, [EventBridge] -> [규칙]으로 이동하여 [규칙 생성] 버튼을 클릭한다.
8. 규칙 세부 정보 정의 페이지에서 이름을 입력한 후, [다음] 버튼을 클릭한다.
9. 이벤트 패턴 작성 페이지에서 이벤트 소스를 [AWS 서비스]로 선택한다.
10. 이벤트 패턴 부분의 이벤트 소스는 [EC2], 이벤트 유형은 [EC2 Instance State-change Notification]으로 선택한 후, [모든 상태]와 [모든 인스턴스]로 선택하여 [다음] 버튼을 클릭한다.
11. 대상 선택 페이지에서 대상 유형은 [AWS 서비스], 대상 선택은 [SNS 주제]로 선택한다. 그리고 이전에 생성한 주제를 선택한 후, [다음] 버튼을 클릭한다.
12. 검토 및 생성 페이지에서 설정한 구성을 확인한 후, [규칙 생성] 버튼을 클릭한다.
13. EC2 인스턴스의 상태를 변경하여 테스트를 진행하기 위해 [EC2] -> [인스턴스]로 이동하여 실행 중인 인스턴스를 중지한다.
14. EC2 인스턴스 정지/시작/종료에 따른 EC2의 상태 변경에 대한 메일을 수신하게 된다.

 

 

실습: CloudWatch Logs를 활용한 Apache 모니터링

 

* CloudWatch Logs를 활용하여 EC2 인스턴스에 설치된 Apache의 Access Log와 Error Log를

CloudWatch Logs Agent를 통해 로그 그룹에서 확인할 수 있도록 한다. *

 

1. IAM 정책 생성을 위해 [서비스] -> [보안, 자격 증명 및 규정 준수] -> [IAM] -> [정책]으로 이동하여 [정책 생성] 버튼을 클릭한다.
2. 정책 생성 페이지에서 서비스는 [CloudWatch Logs], 작업은 [DescribeLogStreams, CreateLogGroup, CreateLogStream, PutLogEvents], 리소스는 [모든 리소스]로 선택한 후, [다음] 버튼을 클릭한다.
3. 정책 이름을 입력하고 [정책 생성] 버튼을 클릭한다.
4. IAM 역할 생성을 위해 [IAM] -> [역할]로 이동하여 [역할 만들기] 버튼을 클릭한다.
5. 신뢰할 수 있는 엔터티 선택 페이지에서 [AWS 서비스]와 [EC2]를 선택한 후, [다음] 버튼을 클릭한다.
6. 권한 추가 페이지에서 생성한 정책을 선택한 후, [다음] 버튼을 클릭한다.
7. 이름 지정, 검토 및 생성 페이지에서 역할 이름을 입력한 후, [역할 생성] 버튼을 클릭한다.
8. EC2 인스턴스에 생성한 역할을 부여하기 위해 [서비스] -> [컴퓨팅] -> [EC2] -> [인스턴스]로 이동하여 [작업] -> [보안] -> [IAM 역할 수정] 버튼을 클릭합니다. 생성되어 있는 인스턴스가 없다면 인스턴스를 생성한 후 진행합니다.
9. IAM 역할 수정 페이지에서 생성한 IAM 역할을 선택한 후, [저장] 버튼을 클릭합니다.
10. EC2 인스턴스의 보안 그룹 설정을 변경하기 위해 [보안] 탭에서 보안 그룹을 클릭한다.
11. 보안 그룹의 [인바운드 규칙] 탭에서 위와 같이 규칙을 추가한 후, 인스턴스에 접속하여 아래의 내용을 수행한다.

# root 권한 획득 및 인스턴스 업데이트
sudo su
yum update -y

# apache 설치 및 시작
yum install httpd -y
service httpd start
chkconfig httpd on

# awslogs 설치
yum install awslogs -y

# awslogs 설정 (맨 아래에 내용 추가)
nano /etc/awslogs/awslogs.conf

[/var/log/httpd/access_log]
datetime_format = %b %d %H:%M:%S
file = /var/log/httpd/access_log
buffer_duration = 5000
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 = %b %d %H:%M:%S
file = /var/log/httpd/error_log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/httpd/error_log

# awscli 설정 (맨 아래 region 항목을 본인의 region으로 수정)
nano /etc/awslogs/awscli.conf

# aws cli 환경 설정
aws configure

# awslogs 시작
systemctl start awslogsd
systemctl enable awslogsd

12. [CloudWatch] -> [로그 그룹]으로 이동하면, EC2 인스턴스로부터 수집된 Apache 서버의 Access Log와 Error Log를 확인할 수 있다.

'AWS > Beginner' 카테고리의 다른 글

[AWS] 31. AWS Cloud9  (0) 2022.03.27
[AWS] 30. 클라우드 용어 정리(12)  (0) 2022.03.27
[AWS] 28. AWS Lambda  (0) 2022.03.22
[AWS] 27. AWS OpsWorks  (0) 2022.03.21
[AWS] 26. AWS CloudFormation  (0) 2022.03.19