←전체 그래프상위: Web Security
요약
AWS CloudWatch는 AWS 리소스를 모니터링하고 로그를 수집하며 이상 감지 시 알람을 보내는 서비스입니다. 보안 관점에서 침입 탐지, 이상 트래픽 감지, 공격 시도 로깅에 활용됩니다.
3가지 핵심 기능
| 기능 | 설명 |
|---|
| Metrics | 숫자 데이터 수집 (CPU, 메모리 등) |
| Logs | 텍스트 로그 수집 (에러, 접속 기록 등) |
| Alarms | 이상 감지 시 알림 |
1. Metrics (지표)
자동 수집되는 것들
| 서비스 | 지표 |
|---|
| EC2 | CPU 사용률, 네트워크 I/O, 디스크 I/O |
| ALB | 요청 수, 응답 시간, 5xx 에러 수 |
| RDS | DB 연결 수, 쿼리 지연 시간 |
커스텀 지표 (직접 보내야 함)
- 메모리 사용률 (EC2 기본 제공 안 함)
- 애플리케이션 지표 (활성 사용자 수, API 호출 수 등)
2. Logs (로그)
구조
Log Group (애플리케이션 단위)
└── Log Stream (인스턴스/날짜 단위)
└── Log Events (실제 로그 한 줄씩)
예시
Log Group: /app/translation-service
├── Log Stream: i-0abc123/2024-01-15
│ └── [14:32:01] user=123 action=translate lang=ko→en
│ └── [14:32:02] user=123 action=translate complete
│
└── Log Stream: i-0abc123/2024-01-16
└── ...
수집 방법
- EC2: CloudWatch Agent 설치 필요
- Lambda, ECS: 자동 수집
- 애플리케이션: SDK로 직접 전송
3. Alarms (알람)
구성
지표 → 조건 → 액션
예시:
CPU > 80% (5분간) → SNS → 이메일/Slack 알림
5xx 에러 > 100개/분 → SNS → 개발자 호출
API 비용 > 일일 한도 → SNS → 서비스 일시 중단
알람 상태
| 상태 | 의미 |
|---|
| OK | 정상 |
| ALARM | 임계값 초과 |
| INSUFFICIENT_DATA | 데이터 부족 |
보안 관련 알람 설정
| 알람 | 조건 | 이유 |
|---|
| CPU 과부하 | > 80% | 서버 증설 필요 / DDoS 의심 |
| 5xx 에러 급증 | > 10개/분 | 서비스 장애 / 공격 시도 |
| 외부 API 호출량 | > 일일 한도 90% | 비용 폭탄 방지 |
| 로그인 실패 | > 50회/분 (동일 IP) | 무차별 대입 공격 (Brute Force) |
비용
요금은 us-east-1 · 2026-08 기준이며 변동될 수 있음
| 항목 | 무료 티어 | 이후 |
|---|
| 기본 지표 | 무료 | - |
| 커스텀 지표 | 10개 | 개당 $0.30/월 |
| 알람 | 10개 | 개당 $0.10/월 |
| 로그 수집 | 5GB | $0.50/GB |
| 로그 저장 | - | $0.03/GB/월 |
아키텍처에서의 위치
┌─────────────────┐
│ CloudWatch │
│ ┌───────────┐ │
[EC2] ────────────▶│ │ Metrics │ │──▶ 대시보드
│ └───────────┘ │
[ALB] ────────────▶│ ┌───────────┐ │──▶ 알람 → SNS → 이메일/Slack
│ │ Logs │ │
[Spring Boot] ────▶│ └───────────┘ │──▶ 로그 검색/분석
└─────────────────┘
관련 개념
- DDoS - CloudWatch로 DDoS 공격 탐지 가능
- Firewall - 알람과 연동하여 자동 IP 차단