AWS/AWS Architecting / / 2023. 7. 2. 18:50

[AWS Architecting]모니터링 및 크기 조정

반응형

1. 모니터링 및 로깅 도구

CloudWatch 지표, CloudWatch Logs, CloudTrail, VPC 흐름 로그 등의 도구를 사용하면 계정의 활동을 모니터링하고 로깅할 수 있습니다.

 

모니터링은 리소스 운영 및 작동을 추적할 수 있는 방법으로, '무슨 변화가 필요한가'를 알 수 있는 정보를 제공합니다.

 

모니터링을 하는 이유:

운영 상태 운영 가시성 및 인사이트 확보
애플리케이션 성능 성능 스택의 모든 계층에서 데이터 수집
리소스 사용률 - 리소스 최적화를 개선
- 인프라가 수요를 충족하는지 측정
보안 감사 - 증거수집, 보안 및 무결성을 자동화 및 관리
- 사용자가 환경의 일부에 액세스하는지 및 시기 파악 가능
- 사용자 권한 확인 가능

 

Amazon CloudWatch:

Amazon CloudWatch는 실시간에 가까운 시스템 이벤트 스트림을 제공하는 AWS 서비스입니다.

이러한 이벤트는 AWS 리소스에 대한 변경사항을 설명합니다.

CloudWatch를 사용하면 시스템 전체의 리소스 사용률, 애플리케이션 성능 및 운영상태를 시각적으로 파악할 수 있습니다.

 

- 지표 및 로그의 실시간 수집
- 모니터링 데이터를 한 위치에서 액세스
- 경보 생성 및 알림 전송
- 규칙에 따라 리소스 용량 변경
- 대시보드 생성 및 조회

 

CloudWatch 지표:

지표는 시스템 성능에 대한 데이터입니다. 

대다수 서비스에서는 기본적으로 리소스 관련 지표를 제공합니다. 

CloudWatch는 검색, 그래프 작성 및 경보를 위해 계정에 모든 지표(AWS 리소스 지표 및 사용자가 제공한 애플리케이션 지표 모두)를 로드할 수 있습니다.

지표 데이터는 15개월 동안 보관되므로 최신 데이터와 이력 데이터를 모두 볼 수 있습니다.

 

같은 로그 파일 server.log에 데이터를 기록하는 두 서버

1. 두 서버의 로그 파일 이벤트를 각각 별도의 로그 스트림에 게시

2. 로그 스트림은 단일 로그 그룹에 수집

3, 지표 필터로 로그 이벤트에서 일치하는 단어, 구문 또는 값을 검색(error)

4. LogFile-ErrorCount 지표에서 error라는 단어 등의 단일 용어가 나오는 횟수 계산 가능

 

 

 

CloudWatch 지표의 구성요소:

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric

 

아마존 CloudWatch 컨셉 - Amazon CloudWatch

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

네임스페이스 - CloudWatch 지표의 컨테이너
- 네임스페이스 별로 지표 격리
지표 -  CloudWatch에 게시된 시간 순서별 데이터 요소 세트를 나타냄
- 지표를 모니터링할 변수로 생각하면, 데이터 요소는 시간에 따른 변수의 값을 나타냄
- 각 지표 데이터 요소는 타임스탬프와 연결
   - 타임스탬프를 제공하지 않으면 데이터 요소를 받은 시간을 기준으로 타임스탬프 생성
차원 - 지표를 고유하게 식별하는 데 도움되는 이름/값 페어
- 각 지표에 차원을 10개까지 할당 가능
- 지표를 설명하는 특징의 범주

 

CloudWatch 로그 유형:

Amazon CloudWatch Logs EC2 인스턴스, CloudTrail, Route 53 및 기타 소스에서 로그파일을 모니터링, 저장 및 액세스
AWS CloudTrail - 콘솔, AWS SDK, CLI 및 AWS 서비스를 통해 수행된 작업 및 계정 활동의 이벤트 기록 제공
- 이벤트 기록은 보안 분석, 리소스 변경 추적 및 문제 해결을 간소화해줌
- 거버넌스, 규정 준수, 운영 및 위험 감사 촉진
- AWS 인프라 전반에서 수행하는 작업과 관련된 계정 활동을 로킹, 모니터링, 보존 가능
VPC Flow Logs VPC의 네트워크 인터페이스에서 송수신되는 IP 트래픽에 대한 정보 캡처
로드밸런싱 - 로드밸런서로 전송된 요청에 대한 상세정보를 캡처하는 액세스 로그 제공
- 애플리케이션에서 사용자 지정 로그 사용 가능.

 

AWS CloudTrail:

AWS CloudTrail은 AWS 인프라에서 계정 활동을 로깅하고 모니터링합니다.

사용자 활동 및 API 사용량을 추적하여 누가 무엇을 언제 했는가에 대한 인사이트를 제공합니다. 

CloudTrail을 사용하면 계정의 AWS API 호출 기록을 가져올 수 있습니다. 

콘솔, AWS SDK, CLI 및 고급 AWS 서비스를 통해 이러한 호출을 수행할 수 있습니다.

 

CloudTrailAWS API 호출을 기록하고 로그 파일을 제공합니다. 

로그파일에 포함되는 정보로는 소스 IP 주소, API 호출자의 ID, 호출시간, 요청 파라미터, AWS 서비스에서 반환하는 응답 요소가 있습니다.

CloudTrail에서 생성하는 AWS API 호출 기록을 활용하여 보안 분석, 리소스 변경 사항 추적 및 규정 준수 감사를 수행할 수 있습니다.


CloudTrail은 리전 단위로 활성화됩니다. 

여러 리전을 사용하는 경우, 리전별로 로그파일이 전송될 장소를 선택할 수 있습니다.

CloudTrail은 로그를 지정된 Amazon S3 버킷에 저장합니다.

리전별로 별도의 Amazon S3 버킷을 사용하거나 하나에 집계할 수 있습니다.

 

S3 버킷에 저장한 로그를 분석하여 다음과 같은 정보를 파악할 수 있습니다:
- 장기 실행 인스턴스가 종료된 이유와 해당 인스턴스를 종료한 사람(조직의 추적 가능성 및 책임소재 확인 지원)
- 보안 그룹 구성을 변경한 사람(책임소재 확인 및 보안 감사 지원) 

- 권한 부족으로 인해 거부된 활동(조직 안팎의 네트워크 대상 공격 가능성 파악)

 

VPC Flow Logs(VPC 흐름 로그):

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/flow-logs.html

 

VPC 흐름 로그를 사용하여 IP 트래픽 로깅 - Amazon Virtual Private Cloud

VPC 흐름 로그를 사용하여 IP 트래픽 로깅 VPC 흐름 로그는 VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 수집할 수 있는 기능입니다. 흐름 로그 데이터는 Amazon CloudWat

docs.aws.amazon.com

VPC 흐름 로그는 VPC 네트워크 인터페이스에서 송수신되는 IP 트래픽 정보를 캡처합니다.

Amazon EC2 및 Amazon VPC 콘솔에서 특정 리소스의 흐름 로그 탭을 선택하여 흐름 로그에 대한 정보를 볼 수 있습니다.
흐름 로그는 기본적으로 해제되어 있습니다. 흐름 로그 데이터를 수집하려면 옵트인 해야 합니다.


흐름 로그는 Amazon S3 버킷 또는 CloudWatch 로그 그룹에 게시됩니다.

데이터는 네트워크 트래픽 경로 외부에서 수집되므로 네트워크 처리량이나 지연시간에 영향을 미치지 않습니다.

 

흐름 로그는 다음과 같은 여러 작업을 수행하는 데 도움이 될 수 있습니다:

- 지나치게 제한적인 보안 그룹 규칙을 진단

- 인스턴스에 연결되고 있는 트래픽을 모니터링

- 네트워크 인터페이스를 오가는 트래픽 방향 결정

 

 

2. 임계값 설정 및 인프라 변경 알람 수신

기존 지표용 CloudWatch 경보를 구성하고, EventBridge를 사용해 지표가 ALARM 상태가 되면 조치를 취합니다.

 

CloudWatch 지표 경보:

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html

 

아마존 CloudWatch 알람 사용 - Amazon CloudWatch

경보를 생성한 직후에 데이터 포인트가 누락되었으며 경보를 생성하기 전에 CloudWatch에 지표가 보고된 경우, CloudWatch는 경보가 생성되기 전 가장 최근의 데이터 포인트를 검색해 경보를 평가합

docs.aws.amazon.com

지표 경보는 단일 CloudWatch 지표를 모니터링합니다. 

경보는 일정 기간에 걸쳐 특정 임곗값과 관련된 지표 값을 기반으로 하나 이상의 작업을 수행합니다.

작업은 Amazon EC2 작업, 자동 크기 조정 작업 또는 Amazon Simple Notification Service(Amazon SNS) 주제로 전송된 알림일 수 있습니다.

 

1. CloudWatch 지표를 식별합니다.

2. 지표를 기준으로 경보를 생성합니다.

3. 지표 임계값 초과 시 수행할 작업을 정의합니다.

 

CloudWatch 지표 경보 상태:

특정 임곗값을 기준으로 선택한 지표를 테스트합니다. 

ALARM이 반드시 위급한 상태를 의미하는 것은 아닙니다.

 

OK 임계값 미초과
ALARM 임계값 초과
INSUFFICIENT_DATA 경보가 방금 시작되었거나, 지표를 사용할 수 없거나, 경보 상태를 결정할 정보 부족

 

CloudWatch 지표 경보 평가:

경보를 생성할 때, CloudWatch가 경보 상태를 변경할 때를 평가할 수 있도록 3가지 설정을 지정할 수 있습니다.

 

통계 지정된 기간 동안의 지표 데이터 집계
(샘플 수, 합계, 평균, 최댓값, 최솟값, 백분위수 등)
기간 평가할 시간의 길이(초 단위)
(기간으로 1분을 선택하면 경보는 1분마다 한 번씩 지표를 평가)
평가 기간
(Evaluation Periods)
경보 상태를 결정할 때 평가할 가장 최근 기간 또는 데이터 요소의 수
경보에 대한 데이터 요소
(Datapoints to Alarm)
경보가 ALARM 상태가 되려면 위반되어야 하는 평가 기간 내의 데이터 요소 수

 

Amazon EventBridge:

Amazon EventBridge 사용 시 AWS와 서비스 형 소프트웨어(SaaS) 애플리케이션에서 적용된 데이터 변경사항에 모두 액세스할 수 있습니다.
CloudWatch에서 캡처된 이벤트를 관리할 때는 기본적으로 EventBridge를 사용합니다.

CloudWatch Events 및 EventBridge의 기본 서비스와 API는 동일하지만 EventBridge에서 더 많은 기능이 제공됩니다. CloudWatch 또는 EventBridge에서 적용하는 변경사항은 각 콘솔에 표시됩니다.

 

Amazon EventBridge에서 수행할 수 있는 작업:

- 메시지를 보내 환경에 대응
- 함수 활성화 또는 작업 시작
- 상태 정보 캡쳐

 

1. CloudWatch에 CPUUtilization 지표 데이터를 보고

2. 사용자 지정 경보 CPUAbove90Percent가 생성 및 구성

   (EC2 인스턴스가 과도하게 사용되는 상황 확인 가능)

3. EventBridge 규칙은 CPUAbove90Percent 경보가 ALARM 상태 이면 지원팀에 알리도록 구축

   (지원팀 조사 후 조치 가능)

4. EventBridge에서 두 가지 작업을 수행:

   - Amazon SNS 주제를 사용하여 구독한 수신자에게 이메일 전송

   - 운영팀의 서드파티 모니터링 도구에 다양한 정보가 포함된 알람을 전송

 

 

3. Amazon EC2 워크로드에 고가용성 추가 및 트래픽 분산

Elastic Load Balancing에서 사용 가능한 옵션을 살펴봅니다. 

사용 사례에 따라 Application Load Balancer, Network Load Balancer 또는 Gateway Load Balancer 중 하나를 선택합니다.

 

Elastic Load Balancing(ELB)의 기능:

ELB 로드밸런서는 네이티브 방식으로 사용자를 EC2 인스턴스, 컨테이너 배포 및 AWS Lambda 함수에 연결합니다.

 

고가용성 - 단일 또는 여러 가용 영역에서 여러 대상에 자동으로 트래픽 분산
- 대상의 예: EC2 인스턴스, 컨테이너 및 IP 주소
계층 4 또는 계층 7 
HTTP 및 HTTPS 로드밸런싱
- 계층 7 전용 기능에 대해 HTTP 또는 HTTPS 애플리케이션을 로드밸런싱
- TCP만 사용하는 애플리케이션에 대해 엄격한 계층 4 로드밸런싱 사용 가능
보안 기능 - Amazon VPC를 사용해서 로드밸런서와 연결된 보안 그룹을 생성 및 관리하여 추가 네트워킹 및 보안 옵션을 제공
- 내부(인터넷에 연결되지 않음) 로드밸런서도 생성 가능
상태 확인 - 비정상 대상을 감지하고, 해당 대상으로 트래픽 전송을 중단한 다음, 나머지 정상 대상으로 로드를 분산
모니터링 CloudWatch 지표와 통합되며 요청 추적 기능을 제공

 

로드밸런서 유형:

Application Load Balancer
(ALB)
- 7계층(애플리케이션 계층)에서 작동
- 콘텐츠 기반 라우팅, 컨테이너에서 실행되는 애플리케이션, 개방형 표준 프로토콜(WebSocket 및 HTTP/2)을 지원
- HTTP 및 HTTPS 트래픽의 고급 로드밸런싱에 이상적
Network Load Balancer
(NLB)
- 4계층(전송 계층)에서 작동
- 높은 처리량과 매우 짧은 지연 시간을 유지하면서 초당 수천만 건의 요청을 처리하도록 설계
- IP 프로토콜 데이터에 따라 대상으로 연결을 라우팅
   - 대상에는 EC2 인스턴스, 컨테이너 및 IP 주소가 포함
- TCP 및 User Diagram Protocol(UDP) 트래픽 밸런싱에 적합
Gateway Load Balancer
(GWLB)
- 3계층(네트워크 계층)에서 작동
- 서드 파티 가상 어플라이언스를 손쉽게 배포, 크기 조정 및 관리
- 여러 가상 어플라이언스에 트래픽을 분산하면서 수요에 따라 확장 및 축소하는 하나의 게이트웨이 역할
- 네트워크의 잠재적 장애 지점 감소, 가용성 상승
Classic Load Balancer
(CLB)
이전 세대의 로드밸런서

 

ELB 구성요소:

리스너 - 로드밸런서당 2개 이상 소유 가능
-  리스너의 기능은 로드밸런서 유형별로 다름
- 사용자가 정의한 규칙 및 설정에 따라 하나 이상의 대상그룹에 요청 전달 가능
대상그룹 - 지정된 프로토콜과 포트 번호를 사용하여 하나 이상의 등록된 대상(예: EC2 인스턴스)으로 요청을 라우팅
- 여러 대상그룹에 대상 등록 가능

 

ELB 기능:

https://aws.amazon.com/ko/elasticloadbalancing/features/?nc=sn&loc=2 

 

네트워크 트래픽 분산 - Elastic Load Balancing - Amazon Web Services

 

aws.amazon.com

특성 ALB NLB GWLB
로드밸런서 유형 7계층 4계층 3계층 게이트웨이
+
4계층 로드밸런싱
상태 확인 O O O
CloudWatch 지표 O O O
로깅 O O O
SSL 오프로드 O O  
Connection draining O O O
소스 IP 주소 유지 O O O
고정 IP 주소   O  
대상으로서 Lambda 함수 O    
리디렉션 O    
고정 응답 작업 O    

 

 

4. 동적으로 용량 확장 및 축소

AWS Auto Scaling은 애플리케이션을 모니터링하고 용량을 자동으로 조정하여, 안정적이고 예측 가능한 성능을 유지합니다.

AWS Auto Scaling을 사용하면 몇 분 만에 여러 서비스 전체에서 여러 리소스에 대한 애플리케이션 크기 조정을 설정할 수 있습니다.

 

AWS Auto Scaling은 Amazon EC2, Amazon DynamoDB, Amazon Aurora 등 여러 서비스에 걸쳐 짧은 간격으로 우리 소스에 대한 애플리케이션 크기 조정을 제공합니다.

컴퓨팅 리소스의 경우 Amazon EC2 Auto Scaling을 사용하여 해당 워크 로드의 예상 수요에 따라 크기 조정을 호출합니다. 

 

Amazon EC2 Auto Scaling 구성요소:

 

시작 템플릿 - 필요한 리소스
- AMI의 ID인스턴스 유형 등 EC2 인스턴스를 시작하는 데 필요한 파라미터 포함
- Amazon EC2 Auto Scaling을 위한 모든 기능을 제공
- Amazon EC2의 최신 기능 제공
- https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/create-launch-template.html
Auto Scaling 그룹 - EC2 인스턴스의 모음
- 리소스가 필요한 위치 및 크기
Amazon EC2 Auto Scaling 그룹용 VPC와 서브넷을 선택
포함할 수 있는 최소 및 최대 인스턴스 수를 설정
용량을 충족하기 위해 인스턴스를 시작 또는 종료
- https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/auto-scaling-groups.html
Auto Scaling 정책 - 리소스가 필요한 시기와 기간

 

Amazon EC2 Auto Scaling 호출:

다음 도구를 사용하여 그룹에서 크기 조정을 호출할 수 있습니다:

상태 확인 - 지정된 수의 실행 인스턴스를 항상 유지하도록 그룹 구성
- 인스턴스가 비정상 상태가 되면 종료 후 대체할 다른 인스턴스 시작
CloudWatch 경보 - 크기 조정 정책이 특정 CloudWatch 지표를 추적하도록 명령
- 크기 조정 정책은 연결된 CloudWatch 경보가 ALARM 상태일 때 수행할 작업을 정의
일정 - 일정에 따라 크기 조정
- 시간 및 날짜 함수로 자동으로 수행
- 일정에 따른 크기 조정은 그룹의 인스턴스 수를 조정해야 할 때를 정확히 파악하고 있는 경우에 유용
수동 크기 조정 - 리소스 크기를 조정하는 가장 기본적인 방법
- 그룹의 최대용량, 최소 용량 또는 권장용량의 변경사항만 지정

 

Amazon EC2 Auto Scaling 크기 조정 방법:

예약 크기 조정 - 알려진 로드 변경 전에 애플리케이션 크기 조정
- 웹 애플리케이션의 예측 가능한 트래픽 패턴에 따라 크기 조정활동 계획 가능
동적 크기 조정 - 수요 변화에 대응하여 크기 조정
- 과도한 유휴 리소스를 유지하지 않고도 트래픽 급증을 처리할 수 있는 추가 용량 확보 가능
예측 크기 조정 - 트래픽 흐름의 일별 및 주별 패턴에 앞서 크기 조정
- 예측 스케일링이 적합한 경우:
   - 주기적 트래픽(예: 정규 업무시간에 리소스 사용량이 높고 저녁, 주말에는 낮음)
   - On/Off가 반복되는 워크 로드 패턴(예: 배치처리, 테스트, 주기적 데이터 분석)
   - 초기화가 오래 걸려서 지연시간이 현저하게 길어지는 애플리케이션

.

 

 

 

 

 

 

 

 

 

 

 

Architecting on AWS 7.4.6 (KO): Student Guide  참고

반응형

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

[AWS Architecting]서버리스  (0) 2023.07.05
[AWS Architecting]자동화  (0) 2023.07.02
[AWS Architecting]데이터베이스  (0) 2023.07.01
[AWS Architecting]스토리지  (0) 2023.07.01
[AWS Architecting]컴퓨팅  (0) 2023.06.29
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유