CloudWatch - Metrics
- 모든 AWS 서비스에 대한 지표 제공
- CPU 사용량, NetworkIn 등 기본 지표 제공
- 배열 형태의 속성을 가짐 (인스턴스 id, 환경, etc)
- 지표 당 최대 10개 배열 선택 가능
- 타임스탬프를 가지며 지표 대시보드 생성 가능
- EC2 인스턴스는 기본적으로 5분마다 지표를 가짐
- 추가적인 비용이 드는 세부 모니터링 활성화 시 1분마다 지표 가짐
- ASG 스케일 아웃 / 인의 작업속도 증대 (모니터링 빈도 늘어남)
- EC2 메모리 사용량은 RAM에서 푸시하지 않음 (커스텀 지표를 통해 가능)
CloudWatch - Custom Metrics
- 메모리 사용량, 디스크공간, 로그인 사용자 수 등 사용자 지정 지표를 생성 가능
- PutMetricData API 호출
- StorageResolution API 파라미터를 통해 지표 해상도로 두가지 값 지정 가능
- 1분에 한번 푸시하는 표준 사용자 지정 지표 (Standard)
- 고해상도 지표 (1, 5, 10, 30초마다 푸시) - 높은 비용
- 사용자 지정 지표는 푸시 방향이 과거 / 미래 상관 없음 (오류 발생 X)
- 지표를 AWS 실제 시간과 동기화 하기 위해서는 EC2 인스턴스 시간을 맞추어야함
CloudWatch - Logs
- 애플리케이션 로그를 AWS에 저장하기 가장 좋은 장소
- 로그 그룹 : 일반적으로 애플리케이션 명
- 로그 스트림 : 애플리케이션 각 인스턴스 / 로그 파일 / 컨테이너를 나타냄
- 로그 만료기간 설정 가능 (영구, 1일 ~ 10년)
- 여러 목적지로 로그 전송 가능
- S3 / KDS / KDF / Lambda / OpenSearch
- 로그는 기본적으로 암호화
- 다양한 소스에서 CloudWatch로 로그 적재 가능
- SDK, CloudWatch Logs Agent, CloudWatch Unified Agent
- Elastic Beanstalk / ECS / Lambda / VPC Flow Logs / API Gateway / CloudTail / Route53 (DNS 쿼리 기록)
CloudWatch Logs for EC2
- 기본적으로 EC2 인스턴스에서 CW로 로그 전송 불가
- EC2 에서 로그 파일을 푸시 할 에이전트를 실행해야함
- CloudWatch Logs Agent를 EC2 인스턴스에서 실행해 CW에 보냄 (IAM 권한 필요)
- 온프레미스 서버에서도 가상서버 위에 Agent를 돌려 로그 보내기 가능
- CloudWatch Logs Agent
- 가상 서버용 (EC2, 온프레미스)
- 이전버전 / CloudWatch Logs 전송만 가능
- CloudWatch Unified Agent
- 가상 서버용 (EC2, 온프레미스)
- 최신버전 / 추가 시스템 수준의 지표 수집
- CPU, Disk metrics, RAM, Netstat, Processes, Swap Space 등
- SSM 매개변수 스토어 사용으로 에이전트 구성도 용이 (중앙 구성 가능)
CloudWatch - Alarm
- 지표에 대해 알림을 트리거할 때 사용
- 3가지 상태
- OK (경보X)
- INSUFFICIENT_DATA (데이터가 부족해 경보상태를 결정할 수 없는 상태)
- ALARM (임곗값 초과로 알림 전송 예정)
- Period : 지표를 평가하는 길이
- 고해상도 사용자 지정 지표 : 10, 30, 60의 배수 초로 설정 가능
- 타겟 1 : EC2
- 정지, 종료, 재부팅, 복구 작업 수행
- 타겟 2 : 오토 스케일링
- SNS 서비스에 알림 전송 (람다를 통해 임곗값 초과 시 동작 수행)
- 복합 경보를 통해 서로 다른 여러 경보간 의존(통합) 가능 AND OR 컨디션
- 복잡한 복합 경보 생성을 통해 경보 노이즈를 줄일 수 있음
EventBridge
- 기본 이벤트 버스 (Default Event Bus)
- Datadog과 같은 SaaS 파트너와 결합해 Partner Event Bus에 이벤트를 보낼수도 있음
- 애플리케이션에서 자신의 이벤트를 Custom Event Bus로 보낼수도 있음
- 리소스 기반 정책을 통해 리전 / 계정 간 이벤트 버스에 접근가능
- 필터를 통해 모든 이벤트를 보관할 수도 있음 (영구, 보관 기간 설정 가능, 이벤트 재현 가능)
- 클라우드 작업 스케줄링 가능 (스크립트 예약, 1시간마다 람다 트리거 -> 람다는 스크립트 실행)
- 이벤트 패턴에 반응 가능 (IAM 루트 유저가 콘솔에서 로그인하는 이벤트에 반응, 알림을 통해 보안 강화 가능)
- 함수를 트리거할 목적지가 여러 군데라면 SQS, SNS 활용 가능
- CloudTrail과 연동하여 모든 AWS API 콜 모니터링 가능
- 필터 적용 가능 (특정 S3의 이벤트만 반응)
Reference