Hands-on with Amazon CloudWatch
AWS 모니터링의 핵심 서비스인 CloudWatch를 처음 접하는 분들을 위한 가이드입니다. 메트릭, 로그, 알람, 대시보드의 기본 개념을 쉽게 설명합니다.
워크샵 바로가기워크샵 개요
이 워크샵에서는 Amazon CloudWatch를 사용하여 AWS 리소스와 애플리케이션을 모니터링하는 방법을 배웁니다. 실시간 메트릭 수집, 로그 분석, 알람 설정, 대시보드 구성까지 관측성(Observability)의 핵심을 다룹니다.
💡 학습 목표: CloudWatch의 핵심 구성 요소(Metrics, Logs, Alarms, Dashboards)를 이해하고 실무에 적용할 수 있습니다.
아키텍처 개요
┌─────────────────────────────────────────────────────────────────┐
│ Data Sources │
├─────────────┬─────────────┬─────────────┬─────────────┬─────────┤
│ EC2 │ Lambda │ RDS │ ECS/EKS │ Custom │
│ (Agent) │ (Auto) │ (Auto) │ (Agent) │ App │
└──────┬──────┴──────┬──────┴──────┬──────┴──────┬──────┴────┬────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ Amazon CloudWatch │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │ Metrics │ │ Logs │ │ Application Signals │ │
│ │ (시계열) │ │ (텍스트) │ │ (APM/Traces) │ │
│ └──────┬──────┘ └──────┬──────┘ └────────────┬────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ 분석 & 시각화 ││
│ │ ┌─────────┐ ┌──────────┐ ┌─────────┐ ┌─────────────────┐ ││
│ │ │Dashboard│ │ Alarms │ │Insights │ │ Anomaly Detection│ ││
│ │ └─────────┘ └────┬─────┘ └─────────┘ └─────────────────┘ ││
│ └───────────────────┼─────────────────────────────────────────┘│
└──────────────────────┼──────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Actions & Integrations │
├─────────────┬─────────────┬─────────────┬───────────────────────┤
│ SNS │ Auto Scaling│ Lambda │ EventBridge │
│ (알림) │ (스케일링) │ (자동화) │ (이벤트 라우팅) │
└─────────────┴─────────────┴─────────────┴───────────────────────┘
단계별 기본 지식
Step 1: CloudWatch 개요
Amazon CloudWatch의 핵심 개념과 구성 요소를 이해합니다.
Amazon CloudWatch
AWS의 통합 모니터링 서비스입니다. 메트릭 수집, 로그 관리, 알람 설정, 대시보드 시각화를 한 곳에서 제공합니다. EC2, RDS, Lambda 등 거의 모든 AWS 서비스와 연동됩니다.
🏥 비유: 병원의 환자 모니터링 시스템입니다. 심박수(CPU), 혈압(메모리), 체온(네트워크) 등 다양한 지표를 실시간으로 확인하고, 이상 시 알람이 울립니다.
Observability (관측성)
시스템의 내부 상태를 외부에서 측정 가능한 데이터로 파악하는 능력입니다. Metrics(지표), Logs(로그), Traces(추적) 세 가지 핵심 요소로 구성됩니다.
🔍 비유: 자동차 계기판입니다. 속도계(Metrics), 블랙박스(Logs), 내비게이션 경로(Traces)를 통해 차량 상태를 파악합니다.
📊 Observability의 3가지 기둥: 1. Metrics - 숫자로 표현되는 측정값 (CPU 80%, 응답시간 200ms) 2. Logs - 이벤트 기록 (에러 메시지, 접속 기록) 3. Traces - 요청의 흐름 추적 (API → Lambda → DynamoDB)
CloudWatch vs CloudTrail
CloudWatch는 '성능 모니터링'(CPU, 메모리, 에러율), CloudTrail은 '감사 로깅'(누가 언제 무엇을 했는지)입니다. 목적이 다릅니다.
📹 비유: CloudWatch는 '속도 측정 카메라', CloudTrail은 '블랙박스'입니다.
실무 팁
- •CloudWatch는 대부분의 AWS 서비스에서 기본 메트릭을 무료로 제공합니다 (5분 간격)
- •상세 모니터링(1분 간격)은 추가 비용이 발생하니 필요한 리소스에만 활성화하세요
- •CloudWatch Agent를 설치하면 메모리, 디스크 사용량 등 OS 레벨 메트릭도 수집 가능합니다
Step 2: CloudWatch Metrics
메트릭의 개념과 Namespace, Dimension을 이해합니다.
Metric (메트릭)
시간 순서대로 기록된 데이터 포인트의 집합입니다. 각 데이터 포인트는 타임스탬프와 값(선택적으로 단위)을 가집니다. 예: CPUUtilization 80% at 2024-01-15 10:00:00
📈 비유: 체중계 기록입니다. 매일 같은 시간에 측정한 몸무게를 그래프로 그리면 추세를 볼 수 있죠.
Namespace (네임스페이스)
메트릭을 그룹화하는 컨테이너입니다. AWS 서비스는 'AWS/서비스명' 형식을 사용합니다. 커스텀 메트릭은 자신만의 네임스페이스를 만들 수 있습니다.
📁 비유: 파일 폴더입니다. EC2 관련 메트릭은 'AWS/EC2' 폴더에, RDS는 'AWS/RDS' 폴더에 정리됩니다.
📂 주요 AWS Namespace 예시: AWS/EC2 - EC2 인스턴스 메트릭 AWS/RDS - RDS 데이터베이스 메트릭 AWS/Lambda - Lambda 함수 메트릭 AWS/ELB - Load Balancer 메트릭 AWS/S3 - S3 버킷 메트릭 Custom/MyApp - 사용자 정의 메트릭
Dimension (차원)
메트릭을 고유하게 식별하는 이름/값 쌍입니다. 같은 메트릭이라도 Dimension으로 구분됩니다. 예: CPUUtilization 메트릭을 InstanceId로 구분하면 각 EC2별 CPU를 볼 수 있습니다.
🏷️ 비유: 상품의 태그입니다. '티셔츠'라는 상품도 색상=빨강, 사이즈=L 태그로 구분하듯이요.
🔖 Dimension 예시: InstanceId=i-1234567890abcdef0 (특정 EC2) AutoScalingGroupName=my-asg (특정 ASG) LoadBalancer=app/my-alb/xxx (특정 ALB) ⚠️ 주의: Dimension 조합이 다르면 별개의 메트릭으로 취급됩니다
Period & Statistics
Period는 메트릭 집계 기간(60초, 300초 등), Statistics는 집계 방식(Average, Sum, Maximum, Minimum, SampleCount)입니다.
📊 비유: 성적표입니다. 1학기(Period) 동안의 평균(Average), 최고점(Maximum)을 계산하는 것과 같습니다.
실무 팁
- •EC2 기본 메트릭은 CPU, 네트워크, 디스크 I/O만 제공합니다. 메모리는 CloudWatch Agent 필요!
- •커스텀 메트릭 비용은 메트릭 수 × Dimension 조합 수로 계산됩니다. Dimension을 과도하게 사용하면 비용 폭증!
- •High Resolution 메트릭(1초 단위)은 비용이 높으니 꼭 필요한 경우에만 사용하세요
Step 3: CloudWatch Logs
로그 수집, 저장, 분석의 기본 구조를 배웁니다.
Log Group (로그 그룹)
같은 보존 기간, 모니터링, 접근 제어 설정을 공유하는 로그 스트림의 그룹입니다. 보통 애플리케이션이나 서비스 단위로 생성합니다.
📚 비유: 도서관의 '서가'입니다. 같은 주제의 책(로그)들을 한 서가에 모아두는 것처럼요.
📁 Log Group 설정 항목: - Retention Period: 1일 ~ 영구 보존 (비용 영향!) - KMS 암호화: 민감한 로그 보호 - Metric Filter: 로그에서 메트릭 추출 - Subscription Filter: 실시간 로그 스트리밍
Log Stream (로그 스트림)
동일한 소스에서 발생한 로그 이벤트의 시퀀스입니다. 예: 각 EC2 인스턴스, 각 Lambda 실행, 각 ECS 컨테이너별로 별도 스트림이 생성됩니다.
📖 비유: 서가 안의 '개별 책'입니다. 각 서버가 자신만의 일기장을 쓰는 것과 같아요.
Log Event (로그 이벤트)
실제 로그 메시지입니다. 타임스탬프와 메시지 본문으로 구성됩니다. CloudWatch Logs에 저장되는 가장 작은 단위입니다.
📝 비유: 일기장의 '한 줄 기록'입니다.
Log Insights
CloudWatch Logs를 SQL과 유사한 쿼리 언어로 분석하는 기능입니다. 대용량 로그에서 패턴을 찾거나 통계를 추출할 때 유용합니다.
🔍 비유: 도서관의 '검색 시스템'입니다. 수만 권의 책에서 원하는 내용을 빠르게 찾아줍니다.
📝 Log Insights 쿼리 예시: # 최근 에러 로그 조회 fields @timestamp, @message | filter @message like /ERROR/ | sort @timestamp desc | limit 20 # 시간대별 에러 수 집계 filter @message like /ERROR/ | stats count(*) by bin(1h)
실무 팁
- •로그 보존 기간을 무제한으로 두면 비용이 계속 증가합니다. 적절한 보존 기간을 설정하세요
- •Lambda는 자동으로 /aws/lambda/함수명 로그 그룹을 생성합니다
- •EC2 로그 수집은 CloudWatch Agent 설치가 필요합니다
- •Log Insights 쿼리는 스캔한 데이터 양에 따라 과금됩니다
Step 4: CloudWatch Alarms
알람 설정과 자동화된 대응 방법을 학습합니다.
Alarm States (알람 상태)
알람은 OK, ALARM, INSUFFICIENT_DATA 세 가지 상태를 가집니다. 메트릭 값이 임계값을 넘으면 ALARM, 정상이면 OK, 데이터가 없으면 INSUFFICIENT_DATA입니다.
🚦 비유: 신호등입니다. 초록(OK), 빨강(ALARM), 노랑(INSUFFICIENT_DATA)으로 상태를 표시합니다.
🚦 알람 상태 전이: OK → ALARM: 임계값 초과 (예: CPU > 80%) ALARM → OK: 정상 복귀 (예: CPU < 80%) INSUFFICIENT_DATA: 메트릭 데이터 없음 ⚠️ 주의: INSUFFICIENT_DATA도 알람 액션을 트리거할 수 있습니다
Threshold & Period
Threshold는 알람이 발생하는 기준값, Period는 평가 기간입니다. 'N개 Period 중 M개가 임계값 초과 시 알람' 형태로 설정합니다.
⚖️ 비유: 체중 관리입니다. '3일 연속(Period) 70kg(Threshold) 초과 시 다이어트 시작(Alarm)'
📐 알람 설정 예시: - Metric: CPUUtilization - Threshold: 80% (GreaterThanThreshold) - Period: 300초 (5분) - Evaluation Periods: 3 - Datapoints to Alarm: 2 → '5분 간격으로 3번 평가해서 2번 이상 80% 초과 시 알람'
Alarm Actions
알람 상태 변경 시 실행할 작업입니다. SNS 알림, Auto Scaling, EC2 액션(중지/종료/재부팅), Systems Manager 자동화 등을 트리거할 수 있습니다.
🔔 비유: 화재 경보기입니다. 연기 감지(ALARM) 시 스프링클러 작동(Action)과 소방서 연락(SNS)이 자동으로 실행됩니다.
Composite Alarms
여러 알람을 AND/OR 논리로 조합한 알람입니다. 복잡한 조건을 표현하거나 알람 노이즈를 줄일 때 유용합니다.
🧩 비유: 복합 조건문입니다. 'CPU 높음 AND 메모리 높음'일 때만 알람을 울리게 할 수 있습니다.
실무 팁
- •알람이 너무 민감하면 피로감이 생깁니다. Evaluation Periods를 적절히 설정하세요
- •SNS Topic을 통해 이메일, SMS, Slack, PagerDuty 등 다양한 채널로 알림 가능
- •비용 알람은 us-east-1 리전에서만 설정 가능합니다 (Billing 메트릭 위치)
- •Anomaly Detection 알람을 사용하면 ML 기반으로 비정상 패턴을 자동 감지합니다
Step 5: CloudWatch Dashboards
대시보드를 만들어 메트릭을 시각화합니다.
Dashboard
여러 위젯을 배치하여 시스템 상태를 한눈에 파악할 수 있는 화면입니다. 여러 리전, 여러 계정의 메트릭을 하나의 대시보드에 표시할 수 있습니다.
🖥️ 비유: 자동차 계기판입니다. 속도, 연료, 엔진 온도 등 중요한 정보를 한 화면에서 확인합니다.
Widget Types
Line(선 그래프), Stacked Area(누적 영역), Number(단일 숫자), Gauge(게이지), Text(마크다운), Alarm Status, Logs Table 등 다양한 위젯을 제공합니다.
📊 비유: 엑셀 차트 종류입니다. 데이터 특성에 맞는 차트를 선택하면 더 효과적으로 정보를 전달할 수 있습니다.
📈 위젯 선택 가이드: Line: 시간에 따른 추세 (CPU, 응답시간) Stacked Area: 구성 요소별 비중 (메모리 사용 분포) Number: 현재 값 강조 (활성 사용자 수) Gauge: 목표 대비 현재 상태 (SLA 달성률) Alarm Status: 알람 상태 한눈에 보기
Cross-Account & Cross-Region
CloudWatch 교차 계정 관측성을 설정하면 여러 AWS 계정과 리전의 메트릭을 하나의 대시보드에서 볼 수 있습니다.
🌍 비유: 글로벌 관제 센터입니다. 전 세계 지사의 상황을 본사에서 한 화면으로 모니터링합니다.
Automatic Dashboards
AWS가 자동으로 생성하는 서비스별 대시보드입니다. EC2, Lambda, RDS 등 주요 서비스의 핵심 메트릭을 바로 확인할 수 있습니다.
🎁 비유: 기본 제공 템플릿입니다. 처음부터 만들 필요 없이 바로 사용할 수 있습니다.
실무 팁
- •대시보드는 월 3개까지 무료, 이후 대시보드당 월 $3 과금
- •대시보드를 JSON으로 내보내기/가져오기 가능 → 버전 관리 및 복제에 활용
- •팀별, 서비스별로 대시보드를 분리하면 관리가 편합니다
- •중요한 대시보드는 TV 모니터에 자동 새로고침으로 띄워두세요
Step 6: CloudWatch Agent
EC2에서 상세 메트릭과 로그를 수집하는 방법을 배웁니다.
CloudWatch Agent
EC2 기본 메트릭(CPU, 네트워크, 디스크 I/O)에 더해 메모리, 디스크 사용량, 프로세스 정보 등 OS 레벨 메트릭을 수집합니다. 또한 로그 파일을 CloudWatch Logs로 전송합니다.
🔌 비유: 서버에 설치하는 '건강 측정기'입니다. 기본 체온계(EC2 기본 메트릭)로는 알 수 없는 혈압, 혈당(메모리, 디스크)까지 측정합니다.
Agent Configuration
JSON 형식의 설정 파일로 수집할 메트릭, 로그 파일 경로, 수집 주기 등을 정의합니다. SSM Parameter Store에 저장하여 여러 서버에 동일 설정을 배포할 수 있습니다.
📋 비유: 건강검진 항목 체크리스트입니다. 어떤 검사를 받을지 미리 선택하는 것과 같습니다.
📝 Agent 설정 주요 섹션:
{
"metrics": {
"metrics_collected": {
"mem": { "measurement": ["mem_used_percent"] },
"disk": { "measurement": ["disk_used_percent"] }
}
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{ "file_path": "/var/log/messages" }
]
}
}
}
}IAM Role for Agent
Agent가 CloudWatch에 데이터를 전송하려면 적절한 IAM 권한이 필요합니다. CloudWatchAgentServerPolicy 관리형 정책을 EC2 역할에 연결합니다.
🔑 비유: 출입증입니다. Agent가 CloudWatch 건물에 들어가 데이터를 전달하려면 출입증(IAM Role)이 필요합니다.
Collected Metrics
Agent로 수집 가능한 메트릭: 메모리(mem_used_percent), 디스크(disk_used_percent), 네트워크(netstat), 프로세스(procstat), GPU(nvidia_smi) 등
📊 비유: 확장된 건강검진 항목입니다. 기본 검진에 포함되지 않는 정밀 검사 항목들입니다.
실무 팁
- •Agent 설치: Systems Manager Run Command로 대량 서버에 한 번에 설치 가능
- •설정 마법사: 'amazon-cloudwatch-agent-config-wizard' 명령으로 대화형 설정 생성
- •메모리 메트릭은 Agent 없이는 수집 불가! 운영 서버에는 필수 설치
- •Agent 로그 위치: /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
- 1.Metrics: 숫자로 표현되는 측정값 (CPU 80%, 응답시간 200ms)
- 2.Logs: 텍스트 기반 이벤트 기록 (에러 메시지, 접속 로그)
- 3.Alarms: 임계값 기반 자동 알림 및 액션 실행
- 4.Dashboards: 메트릭과 알람을 시각화하는 통합 뷰
- 5.Agent: EC2에서 메모리, 디스크 등 상세 메트릭 수집에 필수
- • 기본 메트릭: 무료 (5분 간격, 대부분의 AWS 서비스)
- • 상세 모니터링: 메트릭당 월 $0.30 (1분 간격)
- • 커스텀 메트릭: 메트릭당 월 $0.30
- • 대시보드: 월 3개 무료, 이후 대시보드당 월 $3
- • 로그 수집: GB당 $0.50 (수집) + GB당 $0.03 (저장)
- • 알람: 표준 알람 월 $0.10, 고해상도 알람 월 $0.30