어쩌다 IT
article thumbnail
반응형

Amazon CloudWatch

 

CloudWatch Metrics

  • CloudWatch는 AWS의 모든 서비스에 대한 지표를 제공하므로 계정에서 일어나는 모든 일을 모니터링 가능
  • 지표(Metric)는 모니터링할 변수
  • 지표는 namespaces에 속함
  • 지표의 속성으로는 측정 기준(Dimension)이 있음 (CPU 사용률에 대한 지표 - 특정 인스턴스 ID, 특정 환경 등)
  • 지표당 최대 측정 기준은 10개
  • 지표는 시간을 기반으로 하기 때문에 타임스탬프가 꼭 있어야 함
  • 지표가 많아지면 CloudWatch 대시 보드에 추가해서 모든 지표를 한 번에 볼 수 있음
  • CloudWatch 사용자 지정 지표를 만들 수 있음 (예를 들어 EC2 인스턴스로부터 메모리 사용량 추출 등)
 

Using Amazon CloudWatch metrics - Amazon CloudWatch

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com


CloudWatch Logs

  • AWS에서 로그를 저장하는 최고의 장소
  • 로그 그룹 - 임의의 이름으로 보통 애플리케이션을 나타냄
  • 로그 스트림 - 애플리케이션 내 인스턴스나 다양한 로그 파일명 또는 컨테이너 등을 나타냄
  • 로그 만료일 정의할 수 있는데 로그가 영원히 만료되지 않게 하거나 일정 기간 후 만료되게 설정 가능
  • CloudWatch Logs는 S3, KDS, KDF, Lambda, ElasticSearch 등으로 로그를 전송할 수 있음
 

What is Amazon CloudWatch Logs? - Amazon CloudWatch Logs

What is Amazon CloudWatch Logs? You can use Amazon CloudWatch Logs to monitor, store, and access your log files from Amazon Elastic Compute Cloud (Amazon EC2) instances, AWS CloudTrail, Route 53, and other sources. CloudWatch Logs enables you to centraliz

docs.aws.amazon.com

 

CloudWatch Logs - Sources

  • SDK, CloudWatch Logs 에이전트, 통합 CloudWatch 에이전트를 통해 로그를 보낼 수 있음
  • Elastic Beanstalk는 애플리케이션의 로그를 CloudWatch에 전송
  • ECS는 컨테이너의 로그를 CloudWatch에 전송
  • Lambda는 함수 자체에서 로그를 CloudWatch에 전송
  • VPC Flow Logs는 VPC 메타데이터 네트워크 트래픽 로그를 CloudWatch에 전송
  • API Gateway는 받은 요청을 CloudWatch에 전송
  • CloudTrail은 필터링을 해서 로그를 CloudWatch에 전송
  • Route 53은 모든 DNS 쿼리를 로그로 저장

 

CloudWatch Logs Metric Filter & Insight

  • 로그 내 특정 IP 검색, 특정 IP가 찍힌 로그 검색, ERROR 문구를 가진 로그 검색 등에 필터 표현식 사용 가능
  • 지표 필터를 통해 출현 빈도를 계산해서 지표를 만들 수 있고 이를 CloudWatch 경보에 연동 가능
  • CloudWatch Logs Insight - 로그를 쿼리하고 대시 보드에 바로 추가할 수 있는 기능

CloudWatch Logs 에이전트

 

CloudWatch Logs for EC2

  • EC2 인스턴스에서 CloudWatch로는 기본적으로 어떤 로그도 옮겨지지 않음
  • EC2 인스턴스에 CloudWatch Logs 에이전트를 실행시켜 원하는 로그 파일을 푸시해야 함
  • EC2 인스턴스에 로그를 보낼 수 있게 해주는 IAM 역할 설정이 필요
  • 온프레미스 환경에서도 CloudWatch Logs 에이전트를 설치할 수 있음
 

CloudWatch Logs 에이전트 참조 - Amazon CloudWatch Logs

CloudWatch Logs 에이전트 참조 CloudWatch Logs 에이전트는 Amazon EC2 인스턴스에서 CloudWatch Logs로 로그 데이터를 자동 전송할 수 있게 해줍니다. 에이전트에는 다음 구성 요소가 포함되어 있습니다. CloudWa

docs.aws.amazon.com

 

CloudWatch Logs Agent & Unified Agent

  • EC2 인스턴스나 온프레미스 서버 같은 가상 서버를 위한 것
  • CloudWatch Logs Agent
    • 오래된 버전
    • CloudWatch Logs로 로그만 전송
  • CloudWatch Unified Agent
    • 프로세스나 RAM 등과 같은 추가적인 시스템 단계 지표를 수집
    • CloudWatch Logs에 로그 전송
    • 지표와 로그를 둘 다 사용하기 때문에 통합 에이전트
    • SSM Parameter Store를 이용해서 에이전트를 쉽게 구성 가능
    • 모든 통합 에이전트를 대상으로 중앙 집중식 환경 구성 가능

 

CloudWatch Unified Agent - Metrics

  • 통합 CloudWatch 에이전트를 EC2 인스턴스나 Linux 서버에 설치하면 지표 수집 가능
  • CPU 지표 - active, guest, idle, system, user, steal 등
  • Disk 지표 - free, used, total
  • Disk I/O - writes, reads, bytes, iops
  • RAM - free, inactive, used, total, cached
  • Netstat - TCP나 UDP 연결 수, net packets, bytes 등
  • 프로세스 - total, dead, bloqeud, idle, running, sleep
  • Swap Space - free, used, used %
  • 통합 CloudWatch 에이전트가 기본 EC2 인스턴스 모니터링보다 더 세부적이고 많은 지표를 수 얻을 수 있음

CloudWatch Alarms

  • 경보는 지표에서 알림을 트리거할 때 사용
  • 다양한 옵션(%, 최소값, 최대값 등)을 추가해서 복잡한 경보를 정의할 수 있음
  • 경보의 상태에는 3가지가 있음
    • OK - 트리거 되지 않았음을 의미
    • INSUFFICIENT_DATA - 상태를 결정할 데이터가 부족함을 의미
    • ALARM - 임계값이 위반되어 알림이 보내지는 상태를 의미
  • 기간은 경보가 지표를 평가하는 기간을 의미
  • 고해상도 사용자 지정 지표에도 적용 가능하고 10초, 30초 또는 60초의 배수로 설
 

Using Amazon CloudWatch alarms - Amazon CloudWatch

A particular case of this behavior is that CloudWatch alarms might repeatedly re-evaluate the last set of data points for a period of time after the metric has stopped flowing. This re-evaluation might cause the alarm to change state and re-execute actions

docs.aws.amazon.com

  • CloudWatch Alarm Targets
    • EC2 인스턴스의 동작 - 인스턴스를 멈추거나 삭제, 재시작, 복구 등의 동작을 의미
    • Auto Scaling - 스케일 인 / 아웃을 의미
    • SNS 서비스에 알림 전송

Amazon EventBridge

  • CloudWatch Events의 새 버전
  • 클라우드에서 Cron 작업을 예약할 수 있음
  • 이벤트 패턴에 반응 - 예를 들어, 누군가 루트 계정을 사용하면 이메일을 받을 수 있음
  • 대상이 다양하면 Lambda 함수를 트리거해서 SQS, SNS 메세지 등을 보낼 수 있음
  • 이벤트는 세부 사항을 나타내는 JSON 문서로 생성
  • 기본적으로 EventBridge에 포함된 기본 이벤트 버스는 AWS 서비스에서 생성된 것
  • 파트너 이벤트 버스
    • 소프트웨어 서비스 제공자와 같은 파트너와 통합된 AWS 서비스에서 생성된 것
    • Zendesk, Datadog, Auth0 등
    • 파트너 이벤트 버스로 이벤트를 전송할 수 있고 계정을 통해 AWS 외부에서 일어나는 변화에 반응할 수 있음
  • 사용자 지정 이벤트 버스 - 애플리케이션의 자체 이벤트를 사용자 지정 이벤트 버스로 전송
  • 리소스 기반 정책을 사용해 다른 계정의 이벤트 버스에 액세스 할 수 있음
  • 모두 또는 필터링된 서브셋을 아카이빙 할 수 있고 이벤트 아카이빙 시에 보존 기간을 무기한 또는 일정 기간 설정 가능
  • 아카이브 된 이벤트 재생 가능 (디버깅에 유용)
  • Amazon EventBridge - 스키마 레지스트리
    • Amazon EventBridge는 버스의 이벤트를 분석하고 스키마를 추론할 수 있음
    • 스키마 레지스트리에서 코드를 생성하고 애플리케이션은 코드를 통해 이벤트 버스 내 데이터의 구조를 인식
    • 스키마 버저닝 가능

 

  • 기본 이벤트 버스와 파트너 이벤트 버스로 계정에서 발생하는 이벤트에 반응
  • 사용자 지정 이벤트 버스로 자체 이벤트에 반응
  • 리소스 기반 정책을 활용하여 다른 계정의 이벤트를 수신하거나 거부할 수 있음

 

What Is Amazon EventBridge? - Amazon EventBridge

What Is Amazon EventBridge? EventBridge is a serverless service that uses events to connect application components together, making it easier for you to build scalable event-driven applications. Use it to route events from sources such as home-grown applic

docs.aws.amazon.com

 

Amazon EventBridge event buses - Amazon EventBridge

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com


CloudWatch 인사이트 유형

 

Insights and operational visibility - Amazon CloudWatch

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

CloudWatch Container Insights

  • 컨테이너로부터 지표와 로그를 수집, 집계, 요약하는 서비스
  • Amazon ECS, Amazon EKS, ECS와 EKS의 Fargate, EC2의 쿠버네티스 플랫폼에 직접 실행되는 컨테이너에서 사용
  • 컨테이너에서 수집한 자료를 CloudWatch에서 세분화된 대시 보드를 만들 수 있음
  • EKS나 EC2의 쿠버네티스에서 사용할 경우 컨테이너화된 버전의 CloudWatch 에이전트를 사용해야 함

 

CloudWatch Lambda Insights

  • 서버리스 애플리케이션을 위한 모니터링과 트러블 슈팅 솔루션을 위한 세부 지표 제공
  • CPU 시간, 메모리, Lambda 작업자 종료 등과 같은 정보를 포함한 시스템 수준의 수집, 집계, 요약하는 서비스
  • Lambda 함수를 위해 Lambda 계층으로 제공
  • Lambda 함수 옆에서 실행되며 Lambda Insights라는 대시 보드를 생성해 함수의 성능을 모니터링
  • AWS Lambda에서 실행되는 서버리스 애플리케이션의 세부 모니터링이 필요할 때 사용

 

CloudWatch Contributor Insights

  • Contributor 데이터를 표시하는 시계열 데이터를 생성하고 로그를 분석하는 서비스
  • VPC 로그, DNS 로그 등 AWS가 생성한 모든 로그에서 작동
  • CloudWatch Logs를 통해 트래픽을 많이 생성하는 상위 N개의 IP 주소를 찾을 수 있음

 

CloudWatch Application Insights

  • 모니터링하는 애플리케이션의 잠재적인 문제와 진행 중인 문제를 분리할 수 있도록 자동화된 대시 보드 제공
  • 선택한 특정 기술로만 애플리케이션 실행 가능
  • EBS, RDS, ELB, ASG, Lambda, SQS, DynamoDB, S3, ECS, EKS, SNS, API gateway 등 다양한 AWS 리소스에 연결
  • 발견된 문제와 알림은 Amazon EventBridge와 SSM OpsCenter로 전달

AWS CloudTrail

  • 거버넌스(Governance)와 규정 준수, 감사권을 부여
  • 글로벌 서비스
  • 기본적으로 활성화되어 있음
  • 콘솔, SDK, 기타 AWS 서비스 등에서 발생한 계정 내의 모든 이벤트나 API 호출 등 모든 로그가 CloudTrail에 표시
  • CloudTrail의 로그를 CloudWatch Logs나 Amazon S3로 옮길 수 있음
  • 전체 또는 단일 리전에 적용되는 트레일을 생성해 모든 리전에 걸친 이벤트 기록을 한 곳으로 모을 수 있음
  • 이벤트는 기본적으로 90일간 저장되고 이후에 삭제
  • 기본 기간 이상으로 이벤트를 보존하기 위해서는 S3로 전송해서 로그를 기록하고 Athena를 사용해 분석

 

API 로그 - 표준화된 보안 로깅 서비스 - AWS CloudTrail - AWS

 

aws.amazon.com

 

CloudTrail Events

  • 관리 이벤트 (Management Events)
    • AWS 계정의 리소스에서 수행되는 작업을 나타냄
    • 리소스나 AWS 계정을 수정하는 모든 작업이 CloudTrail에 표시
    • 추적은 기본적으로 관리 이벤트를 기록하게 구성되어 있음
    • 관리 이벤트는 두 종류로 구분, 리소스를 수정하지 않는 읽기 이벤트 리소스를 수정하는 쓰기 이벤트가 있음
  • 데이터 이벤트 (Data Events)
    • 기본적으로 데이터 이벤트는 고볼륨 작업이므로 로깅되지 않음
    • 버킷 및 버킷 내 객체의 Amazon S3 객체 수준 API 활동
    • AWS Lambda 함수 실행 활동
    • 테이블의 Amazon DynamoDB 객체 수준 API 활동
  • CloudTrail Insights 이벤트
    • CloudTrail Insights는 비용을 지불하고 활성화하면 이벤트를 분석해서 계정 내의 특이한 활동을 탐지
    • 부정확한 리소스 프로비저닝, 서비스 한계 도달, AWS IAM 동작 과다 사용, 주기적 유지 관리 작업 부재 등
    • 정상적인 관리 활동을 분석하고 기준선을 생성한 후 모든 쓰기 이벤트를 분석하여 특이한 패턴 탐지
    • 특이한 패턴 발생 시 이벤트를 생성하고 CloudTrail 콘솔, Amazon S3, EventBridge 등으로 전송
 

CloudTrail 로그 파일 작업 - AWS CloudTrail

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

docs.aws.amazon.com


AWS Config

  • AWS 내 리소스에 대한 감사와 규정 준수 여부를 기록할 수 있게 해주는 서비스
  • 설정된 규칙에 기반해 구성과 이의 시간에 따른 변화를 기록하여 필요할 때 빠르게 롤백하고 문제점을 찾아낼 수 있음
  • AWS Config로 해결할 수 있는 문제
    • 보안 그룹에 제한되지 않은 SSH 접근이 있는지?
    • 버킷에 공용 액세스가 있는지?
    • 시간이 지나며 변화한 ALB 구성이 있는지?
    • 위와 같은 경우 규칙이 규정을 준수하든 아니든 변화가 생길 때마다 SNS 알림을 받을 수 있음
  • AWS Config는 리전 단위 서비스이므로 모든 리전별로 구성해야 함
  • 데이터 중앙화를 위해 리전과 계정 간 데이터 통합 가능
  • 모든 리소스의 구성을 S3에 저장해서 Atehna와 같은 서버리스 쿼리 엔진을 통해 분석할 수 있음
 

구성 도구 - AWS Config - Amazon Web Services

계정에 있는 리소스를 검색하고, 해당 구성을 기록하고, 변경 사항을 캡처하여 운영 문제를 신속하게 해결할 수 있습니다.

aws.amazon.com

 

AWS Config 규칙

  • AWS 관리형 Config 규칙이 있음
  • AWS Lambda를 이용해 사용자 정의 Config 규칙을 만들 수도 있음
    • ex) EBS 디스크가 gp2 유형인지 평가
    • ex) 개발 계정에서 EC2 인스턴스가 t2.micro 유형인지 평가
  • 몇몇 규칙들은 구성이 변화할 때마다 평가되거나 트리거 됨
  • AWS Config 규칙은 규정 준수를 위한 것이고 어떤 동작을 미리 예방하거나 차단할 수 없음
  • AWS Config는 유료 서비스이고 비용이 많이 나올 수 있음
  • AWS Config 규칙 - 교정 (Remediations)
    • Config 내에서 행동을 차단할 수는 없지만 SSM 자동화 문서를 이용해 규정을 준수하지 않는 리소스 수정 가능
    • 규정 미준수를 예방하지는 못하지만 리소스가 규정을 미준수할 때마다 수정 작업을 트리거할 수 있음
    • 리소스를 자동 수정했음에도 미준수한다면 5번까지 재시도 가능
  • AWS Config 규칙 - 알림 (Notifications)
    • EventBridge를 사용해 리소스가 규정을 미준수했을 때마다 알림을 보낼 수 있음
    • 모든 구성 변경과 모든 리소스의 규정 준수 여부 알림을 Config에서 SNS로 보낼 수도 있음
 

'AWS Config 관리형 규칙 - AWS Config

사전 예방적 규칙은 NON_COMPLIANT로 플래그가 지정된 리소스를 수정하거나 배포를 방해하지 않습니다.

docs.aws.amazon.com


CloudWatch vs CloudTrail vs Config

  • CloudWatch
    • 지표, CPU, 네트워크 등의 성능 모니터링과 대시 보드를 만드는 데 사용
    • 이벤트와 알림을 받을 수 있음
    • 로그 집계 및 분석 도구 사용할 수 있음
  • CloudTrail
    • 계정 내에서 만든 API에 대한 모든 호출을 기록
    • 특정 리소스에 대한 추적을 정의할 수 있음
    • 글로벌 서비스
  • Config
    • 구성 변경을 기록하고 규정 준수 규칙에 따라 리소스를 평가
    • 변경과 규정 준수에 대한 타임라인을 UI로 표시

 

For an Elastic Load Blancer

  • CloudWatch
    • 들어오는 연결 수를 모니터링
    • 오류 코드 수를 시간 흐름에 따라 비율로 시각화
    • 로드 밸런서의 성능을 볼 수 있는 대시 보드 생성
  • CloudTrail
    • 누가 API를 호출하여 로드 밸런서를 변경했는지 추적
  • Config
    • 로드 밸런서에 대한 보안 그룹 규칙을 추적해 누구도 무언가 수정하지 못하게 하기 위해 사용
    • SSL 인증서 등을 수정하지 않는지 감시하기 위해 사용하거나 로드 밸런서의 구성 변경을 추적
    • SSL 인증서가 로드 밸런서에 할당되어 있어야 한다는 규칙을 만들어 암호화되지 않은 트래픽 접근을 차단
반응형

'자격증 > SAA-C03' 카테고리의 다른 글

[SAA-C03] AWS 보안 및 암호화  (0) 2023.09.19
[SAA-C03] IAM (Identity and Access Management) - 고급  (0) 2023.09.18
[SAA-C03] 머신 러닝  (0) 2023.09.13
[SAA-C03] 데이터 & 분석  (0) 2023.09.12
[SAA-C03] AWS 데이터베이스  (0) 2023.09.11
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!