이 글은 24년 하반기 AWS Certified Solutions Architect - Associate(이하 AWS SAA-C03) 자격증 취득을 위해서 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.
https://www.udemy.com/course/best-aws-certified-solutions-architect-associate
CloudWatch
CloudWatch Metrics
- AWS의 모든 서비스에 대한 지표 제공
- 지표 : 모니터링할 변수.. (ex. CPUUtilization, NetworkIn...)
- 지표는 이름공간(namespaces)에 속함.. 서비스 당 이름공간은 하나임
- 지표의 속성으로 측정 기준이 있음.. 지표당 최대 측정 기준은 30개
- 지표는 타임스템프를 가짐
- CloudWatch 대시보드에서 모든 지표를 한번에 볼 수 있음
- 사용자 지정 지표를 만들 수도 있음
- 'CloudWatch 지표 스트림'을 활성화하면 외부로 스트리밍 가능 (KDF, Datadog, Splunk 등 가능)
- 특정 지표만 필터링해서 보낼 수도 있음
CloudWatch Logs
- 애플리케이션 로그 저장 가능
- 로그 그룹 : 애플리케이션을 나타내는 이름으로 정의
- 로그 스트림 : 로그 그룹 내 다수의 로그 스트림을 가짐.. 특정한 로그 파일 또는 클러스터의 일부로서 갖고 있는 특정한 컨테이너를 나타냄
- 로그 만료 정책 정의 : 하루~10년, 만료되지 않음 등등
- 전송 가능 : S3(배치 형태), KDS, KDF, 람다, OpenSearch에 스트리밍도 가능
- 기본적으로 암호화되고, KMS로 암호화 가능
CloudWatch Logs Insights
- 모인 로그는 CloudWatch logs Insights로 쿼리 가능... 시각적으로 볼 수 있고 대시보드에 추가 가능
`- CloudWatch Logs Insights는 실시간 엔진이 아닌 쿼리 엔진.. 쿼리를 실행하면 과거 데이터만 쿼리함
Sources
- SDK로 로그 전송 가능
- CloudWatch Logs Agent(deprecated)나 CloudWatch Unified Agent(최신)를 사용 가능
- Elastic Beanstalk, ECS, 람다, VPC Flow Logs, API Gateway, CloudTrail, Route53에서 직접 보냄
Destinations
- S3 배치 내보내기로 최장 12시간까지 걸릴 수 있음.. 이건 실시간이나 근 실시간이 아님
ㄴ CloudWatch Logs Subscriptions를 이용하면 로그 이벤트의 실시간 스트림을 처리 분석 가능
ㄴ KDS, KDF, 람다 등에서 받을 수 있고, 필터 걸어서 받을 거만 받을 수 있음
- 서로 다른 여러 계정에서 로그를 받아서 KDS로 합쳐서 스트리밍 후 로그 집계도 가능
- A계정에서 CloudWatch Log Subscriptions Filter로 스트리밍하면, B계정에서 CloudWatch Log Subscriptions Destination으로 액세스 정책(IAM 역할) 확인한 뒤 로그를 받아올 수 있음
Live Tail
- 특정 로그 그룹/스트림에 대해서 필터에 맞는 로그를 실시간으로 보여줌
- CloudWatch Logs 디버깅할 때 좋음
- 하루에 한시간은 무료
CloudWatch Agent
- 기본적으로 EC2에서 어떤 로그도 CloudWatch로 옮겨지지 않음
- EC2 Agent를 깔아서 푸시해야 로그를 보낼 수 있음(IAM 역할 필요)... 온프레미스에서도 가능
종류
CloudWatch Logs Agent : 오래되었고, CloudWatch 로그만 전송가능
CloudWatch Unified Agent : 프로세스나 RAM 같은 추가적인 시스템 단계 지표를 수집 후 CloudWatch 로그에 전송.. SSM Parameter Store를 이용해서 에이전트를 쉽게 구성 가능
- linux 서버에 Unified Agent 설치시 : CPU, 디스크, RAM, Netstat, 프로세스, 스왑공간 등 세부지표 확득 가능
CloudWatch Alarms
- 지표에서 나오는 알람을 트리거.. 샘플링, 최대, 최소, % 등 설정 가능
- 3가지 상태 : OK 정상 / INSUFFICIENT DATA 상태 결정하기에 데이터 부족 / ALARM 한도값 초과
- 기간 : 얼마동안 지표를 평가할지
트리거 대상
- EC2 인스턴스 : 정지, 종료, 재부팅, 복구
- ASG 액션 : 스케일 인/아웃
- SNS 서비스에 알람 전송
복합 알람
- 다수의 메트릭을 사용.. 다른 알람을 AND OR로 결합해서 검사
- 알람 노이즈를 줄이는데 유용함
EC2 인스턴스 복구
- 인스턴스 검사 = EC2 VM 검사
- 시스템 검사 = 기본 하드웨어 검사
- 알람 발생시 EC2 호스트를 옮기고, 동일한 Private/Public/Elastic IP, 메타데이터, 배치그룹을 얻고 SNS에 복구되었다는 걸 알릴 수 있음
CloudWatch Insights
Container Insights
- 컨테이너로부터 지표와 로그를 수집, 집계, 요약
- ECS, EKS, k8s on EC2, Fargate에서 가능
- 컨테이너화 된 버전의 CW써야 컨테이너 찾기 가능
Lambda Insights
- 서버리스 애플리케이션을 위한 모니터링
- 람다 함수 성능 모니터링
Contributor Insights
- 기고자 데이터를 표시하는 시계열 데이터 생성
- VPC, DNS 로그 등에서 작동... 불량 호스트를 찾을 수 있음(오류 많거나 트래픽 높은)
- ex) 상위 10개 불량 IP
Application Insights
- 애플리케이션의 잠재적 문제와 진행 중인 문제를 분리해 자동화된 대시보드 제공
- 백그라운드에서 SageMaker 머신러닝 사용
- 애플리케이션 상태 가시성을 높일 수 있음
- 발견된 모든 문제는 EventBridge와 SSM OpsCenter로 전달됨
EventBridge
- CRON 작업 예약(특정 시간(스케줄), 이벤트 패턴 설정 가능)
- Source : EC2, S3, CodeBuild, CloudTrail, CRON...
- 소스로부터 들어올 때 필터 설정 가능
- Destination : 람다, Batch, ECS, SQS, SNS, KDS...
이벤트 버스
기본 이벤트 버스 : 아마존 서비스로부터 이벤트를 전송하는 AWS 서비스
파트너 이벤트 버스 : datadog, zendesk 등에서 이벤트를 전송 가능
사용자 지정 이벤트 버스 : 각자 애플리케이션에서 전송 가능
- 리소스 기반 정책을 사용해 다른 계정의 이벤트 버스에 액세스 할 수도 있음
- 이벤트 아카이빙도 가능... 보존 기간 설정 가능... 저장된 이벤트 리플레이도 가능
스키마 레지스트리
- 이벤트 브릿지는 버스의 이벤트를 분석하고 스키마를 추론하는 능력이 있음
- 스키마 레지스트리의 스키마를 이용하면 애플리케이션의 코드를 생성할 수 있고, 이벤트 버스의 데이터가 어떻게 정형화되는지 미리 알 수 있음
- 스키마 버저닝도 가능
리소스 기반 정책
- 특정 이벤트 버스의 권한 관리 가능
- 다른 리전이나 다른 계정 이벤트 승인/거부 가능
- 사례 : 여러 계정의 모음인 AWS Organizations의 중앙에 이벤트 버스를 두고 모든 이벤트를 모을 수 있음
CloudTrail
- AWS 계정의 거버넌스(관리), 컴플라이언스(법규 준수), 감사를 실현하는 방법
- 기본값으로 활성화.. AWS 계정 안에서 일어난 모든 이벤트와 API 호출 이력을 콘솔, SDK, CLI, 다른 AWS 서비스로 얻을 수 있음
- trail을 생성해 모든 리전이나 하나의 리전에 적용해서 하나로 모을 수 있음
- 검사&감사 가능하고 90일 이상 보관하고 싶으면, 로그를 S3, CW Logs 등으로 넣을 수 있음
ㄴ S3에 저장한 이벤트는 Athena로 분석 가능
이벤트 종류
관리 이벤트
- AWS 계정 안에서 리소스에 대해 수행된 작업(기본값으로 모든 관리 이벤트로깅)
- 읽기/쓰기 이벤트로 나뉨
데이터 이벤트
- 고용량 작업으로 기본값으로는 로깅 안함
- ex) S3 객체 수준 활동.. Get/PutObject, 람다 함수 실행
CloudTrail Insights 이벤트
- 비용 발생
- 이벤트를 알아서 분석하고 비정상적인 활동에 대한 탐지를 시도
- 정상관리 활동을 분석해서 기준선을 만들고, 지속적으로 올바른 이벤트인지 분석을 함
EventBridge와의 통합
- API 호출이 CloudTrail에 기록될 때, EventBridge가 가로채서 룰을 만들고 SNS로 넘겨서 alert를 생성 가능
AWS Config(구성)
- AWS 리소스에 대한 감사와 규정 준수 여부를 기록할 수 있는 서비스
- 구성과 구성의 시간에 따른 변화를 기록 가능
- 빠르게 롤백하고 문제점 찾기 가능
- ex) 허용되지 않은 SSH 접근이 가능한 SG가 있는지? 퍼블릭 액세스 되는 S3가 있는지? 등
- SNS 알림과 연결할 수 있음
- 리전별 서비스로 모든 리전별로 구성해야함.. 계정과 리전간 데이터 통합은 가능
- S3에 저장 가능
- AWS Config는 뭔가 차단을 하지는 못하고 그저 규정 준수를 위한 평가만 가능... IAM 같은 보안 매커니즘과 다름
- 비용 발생 각 리전당 구성 항목별로 3센트 지불.. 리전당 규칙 평가별 0.1센트
규칙
AWS 관리형 규칙 : 75종
커스텀 룰 : 람다로 정의 ex) 각 Ec2가 t2.micro인지 확인
- 몇몇 규칙은 구성이 변할때마다 평가/트리거 됨
- ex) EBS 디스크가 새롭게 생길 때마다 평가
수정
- SSM 자동화 문서를 이용해서 규정을 준수하지 않는 리소스 수정은 가능
- ex) IAM 액세스 키 규정이 준수되지 않았을 때, IAM 비활성화 등
- 계속 실행하고 싶으면 람다 함수를 실행하는 문서를 생성해서 원하는 작업 수행 가능
- 5번까지 수정 작업 재시도 가능
알림
- EventBridge를 이용해서 특정 이벤트 필터링해서 미준수할 때마다 알림 보낼 수 있음
CloudWatch vs CloudTrail vs Config
CloudWatch
- 지표, CPU, 네트워크 등의 성능 모니터링과 대시보드 만들 때 사용
- 이벤트와 경보 설정 가능
- 로그 집계 및 분석 도구도 사용 가능
CloudTrail
- 계정 내에서 만든 API에 대한 모든 호출을 기록
- 특정 리소스에 대한 추적 가능
- 글로벌 서비스
Config
- 구성 변경을 기록
- 규정 준수 규칙에 따라 리소스를 평가
- 변경과 규정 준수에 대한 타임라인을 보여줌