반응형
Amazon CloudWatch
CloudWatch Metrics
- CloudWatch는 AWS의 모든 서비스에 대한 지표를 제공하므로 계정에서 일어나는 모든 일을 모니터링 가능
- 지표(Metric)는 모니터링할 변수
- 지표는 namespaces에 속함
- 지표의 속성으로는 측정 기준(Dimension)이 있음 (CPU 사용률에 대한 지표 - 특정 인스턴스 ID, 특정 환경 등)
- 지표당 최대 측정 기준은 10개
- 지표는 시간을 기반으로 하기 때문에 타임스탬프가 꼭 있어야 함
- 지표가 많아지면 CloudWatch 대시 보드에 추가해서 모든 지표를 한 번에 볼 수 있음
- CloudWatch 사용자 지정 지표를 만들 수 있음 (예를 들어 EC2 인스턴스로부터 메모리 사용량 추출 등)
CloudWatch Logs
- AWS에서 로그를 저장하는 최고의 장소
- 로그 그룹 - 임의의 이름으로 보통 애플리케이션을 나타냄
- 로그 스트림 - 애플리케이션 내 인스턴스나 다양한 로그 파일명 또는 컨테이너 등을 나타냄
- 로그 만료일 정의할 수 있는데 로그가 영원히 만료되지 않게 하거나 일정 기간 후 만료되게 설정 가능
- CloudWatch Logs는 S3, KDS, KDF, Lambda, ElasticSearch 등으로 로그를 전송할 수 있음
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 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초의 배수로 설
- 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는 버스의 이벤트를 분석하고 스키마를 추론할 수 있음
- 스키마 레지스트리에서 코드를 생성하고 애플리케이션은 코드를 통해 이벤트 버스 내 데이터의 구조를 인식
- 스키마 버저닝 가능
- 기본 이벤트 버스와 파트너 이벤트 버스로 계정에서 발생하는 이벤트에 반응
- 사용자 지정 이벤트 버스로 자체 이벤트에 반응
- 리소스 기반 정책을 활용하여 다른 계정의 이벤트를 수신하거나 거부할 수 있음
CloudWatch 인사이트 유형
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를 사용해 분석
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 등으로 전송
AWS Config
- AWS 내 리소스에 대한 감사와 규정 준수 여부를 기록할 수 있게 해주는 서비스
- 설정된 규칙에 기반해 구성과 이의 시간에 따른 변화를 기록하여 필요할 때 빠르게 롤백하고 문제점을 찾아낼 수 있음
- AWS Config로 해결할 수 있는 문제
- 보안 그룹에 제한되지 않은 SSH 접근이 있는지?
- 버킷에 공용 액세스가 있는지?
- 시간이 지나며 변화한 ALB 구성이 있는지?
- 위와 같은 경우 규칙이 규정을 준수하든 아니든 변화가 생길 때마다 SNS 알림을 받을 수 있음
- AWS Config는 리전 단위 서비스이므로 모든 리전별로 구성해야 함
- 데이터 중앙화를 위해 리전과 계정 간 데이터 통합 가능
- 모든 리소스의 구성을 S3에 저장해서 Atehna와 같은 서버리스 쿼리 엔진을 통해 분석할 수 있음
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로 보낼 수도 있음
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 |