01
CloudWatch란 — AWS의 통합 모니터링
서버가 죽기 전에 CPU가 90%로 올라갑니다. DB 커넥션이 꽉 차기 전에 경고 신호가 있습니다. 이상 트래픽이 들어오기 전에 패턴이 보입니다. CloudWatch는 이 신호들을 수집하고, 조건이 되면 알람을 보냅니다.
| 구성 요소 | 역할 |
|---|---|
| 지표(Metrics) | 시간에 따른 숫자 데이터. CPU 사용률, 네트워크 트래픽, DB 커넥션 수 등 |
| 로그(Logs) | 애플리케이션·시스템 로그. 로그 그룹과 스트림으로 관리 |
| 경보(Alarms) | 지표가 임계값을 넘으면 알림 전송 또는 Auto Scaling 동작 |
| 대시보드 | 여러 지표를 한눈에 보는 커스텀 화면 |
02
지표(Metrics) — 기본 vs 커스텀
기본 제공 지표 (무료)
| 서비스 | 주요 지표 | 확인 주기 |
|---|---|---|
| EC2 | CPUUtilization, NetworkIn/Out, DiskReadOps | 5분 |
| RDS | DatabaseConnections, FreeStorageSpace, CPUUtilization | 1분 |
| ALB | RequestCount, TargetResponseTime, HTTPCode_Target_5XX_Count | 1분 |
| Lambda | Invocations, Duration, Errors, Throttles | 1분 |
파르나스 인프라에서 봐야 할 지표
RDS의
RDS의
DatabaseConnections가 max_connections에 가까워지면 HikariCP 커넥션 풀 exhaustion 직전입니다. EC2의 CPUCreditBalance가 0에 가까우면 t타입 버스트 한계입니다. 이 두 지표에 경보를 걸어두면 장애 전에 감지할 수 있습니다.
커스텀 지표 — EC2 메모리는 기본 제공 안 됨
EC2의 메모리 사용률은 기본 지표에 없습니다. CloudWatch Agent를 설치해야 수집됩니다.
📦 CloudWatch Agent 설치
# Amazon Linux 2023
sudo dnf install amazon-cloudwatch-agent -y
# 설정 마법사 실행
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
# 에이전트 시작
sudo systemctl enable amazon-cloudwatch-agent
sudo systemctl start amazon-cloudwatch-agent
03
CloudWatch Logs — Spring Boot 로그 수집
EC2에 남는 로그를 CloudWatch로 보내면 서버가 죽어도 로그가 남고, 여러 서버의 로그를 한 곳에서 볼 수 있습니다.
📝 Spring Boot → CloudWatch Logs 설정
# CloudWatch Agent 설정 파일 — 로그 수집 부분
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/myapp/*.log",
"log_group_name": "/my-service/application",
"log_stream_name": "{instance_id}",
"retention_in_days": 30
}
]
}
}
}
}
로그 인사이트 — 로그에서 쿼리하기
CloudWatch Logs Insights로 로그에 SQL 비슷한 쿼리를 날릴 수 있습니다.
🔍 로그 인사이트 쿼리 예시
# 최근 1시간 ERROR 로그 검색
fields @timestamp, @message
| filter @message like /ERROR/
| sort @timestamp desc
| limit 50
# 요청별 응답 시간 평균
fields @timestamp, @message
| parse @message "duration=*ms" as duration
| stats avg(duration) by bin(5m)
04
경보(Alarms) — 자동 알림과 Auto Scaling 연동
- CloudWatch → 경보 → 경보 생성
- 지표 선택 (EC2 → CPUUtilization → 특정 인스턴스 선택)
- 조건 설정: 평균 > 70% for 2개 연속 1분 기간
- 알림 작업: SNS 주제 → 이메일 전송
- 경보 이름:
EC2-CPU-High
경보 → Auto Scaling 연동
CPU 경보가 울리면 Auto Scaling 정책을 실행하도록 연동할 수 있습니다. "CPU 70% 초과 시 → 인스턴스 1개 추가" 같은 식으로요. ASG 생성 시 타깃 추적 정책을 쓰면 경보와 스케일링이 자동으로 연결됩니다.
CPU 경보가 울리면 Auto Scaling 정책을 실행하도록 연동할 수 있습니다. "CPU 70% 초과 시 → 인스턴스 1개 추가" 같은 식으로요. ASG 생성 시 타깃 추적 정책을 쓰면 경보와 스케일링이 자동으로 연결됩니다.
05
CloudTrail — 누가 무엇을 했는가
CloudTrail은 AWS 계정의 API 호출 이력을 전부 기록합니다. "언제 누가 어떤 리소스를 만들거나 삭제했는가"를 추적할 수 있습니다.
| 구분 | CloudWatch | CloudTrail |
|---|---|---|
| 목적 | 리소스 상태 모니터링 (성능, 가용성) | API 호출 감사 (누가 무엇을 했는가) |
| 데이터 | 지표, 로그 | API 이벤트 로그 |
| ISMS-P 관련 | 시스템 가용성 증빙 | 접근 이력 감사 증빙 |
ISMS-P에서 CloudTrail
ISMS-P 인증에서 "AWS 관리 콘솔 접속 및 작업 이력"을 요구합니다. CloudTrail을 활성화하고 S3에 90일 이상 보관하면 이 요건을 충족할 수 있습니다. Trail 하나를 만들어 모든 리전에 적용하는 멀티리전 Trail이 권장됩니다.
ISMS-P 인증에서 "AWS 관리 콘솔 접속 및 작업 이력"을 요구합니다. CloudTrail을 활성화하고 S3에 90일 이상 보관하면 이 요건을 충족할 수 있습니다. Trail 하나를 만들어 모든 리전에 적용하는 멀티리전 Trail이 권장됩니다.
📌 CH08 핵심 개념 요약
CloudWatch 4요소지표(Metrics) · 로그(Logs) · 경보(Alarms) · 대시보드
EC2 메모리 지표기본 제공 안 됨 → CloudWatch Agent 설치 필요
중요 경보 대상RDS DatabaseConnections · EC2 CPUCreditBalance · ALB 5XX 에러율
로그 보존로그 그룹에 보존 기간 설정 필수. 무한 보존 시 비용 계속 누적
CloudTrailAPI 호출 감사 로그. ISMS-P 접근 이력 증빙. 멀티리전 Trail 권장