0Pricing
AWS Solutions Architect · 강의

CloudWatch 경보 및 복합 경보

임계값 기반 경보를 설정해 Auto Scaling 또는 SNS 알림을 트리거하고, 여러 경보를 복합 경보로 결합해 불필요한 알림을 줄입니다.

CloudWatch 경보 및 복합 경보은(는) CoddyKit의 무료 AWS Solutions Architect 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AWS Solutions Architect 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

CloudWatch Alarm이란 무엇인가요?

CloudWatch alarm은 지정한 시간 동안 단일 Metric 또는 Metric 수학 표현식의 결과를 모니터링합니다. Metric이 정의한 임계값을 초과하면 alarm의 상태가 변경되고, SNS 알림 전송, Auto Scaling 그룹 조정, EC2 인스턴스 중지 또는 Systems Manager OpsItem 실행과 같은 작업을 자동으로 Trigger할 수 있습니다. Alarm은 AWS에서 운영 대응을 자동화하는 기본 메커니즘입니다.

Alarm 상태

CloudWatch alarm은 항상 세 가지 상태 중 하나입니다. OK — Metric이 정의된 임계값 이내인 상태, ALARM — 필요한 평가 기간 수만큼 Metric이 임계값을 초과한 상태, 데이터 부족 — alarm이 방금 생성되었거나 Metric을 사용할 수 없거나 아직 충분한 데이터가 수집되지 않은 상태입니다. 상태가 변경되면 해당 변경에 맞게 구성된 작업이 실행됩니다. OK, ALARM, 데이터 부족 상태마다 서로 다른 SNS 주제를 지정할 수 있습니다.

# View all alarms and their current state
aws cloudwatch describe-alarms \
  --query 'MetricAlarms[].{Name:AlarmName,State:StateValue,Metric:MetricName}' \
  --output table

# List only alarms currently in ALARM state
aws cloudwatch describe-alarms \
  --state-value ALARM \
  --query 'MetricAlarms[].AlarmName'

CloudWatch Alarm 생성

Alarm을 생성할 때는 다음을 지정합니다. Metric 및 네임스페이스, 통계(Average, Sum, Maximum 등), 기간(Metric을 초 단위로 얼마나 자주 평가할지), 평가 기간(임계값을 초과해야 하는 연속 기간 수), 임계값, 비교 연산자입니다. 지정한 수만큼 연속된 평가 기간 동안 Metric이 임계값을 초과하면 alarm이 Trigger됩니다.

# Create an alarm: trigger when CPU > 70% for 2 consecutive 5-min periods
aws cloudwatch put-metric-alarm \
  --alarm-name HighCPUAlarm \
  --alarm-description 'Trigger when EC2 CPU exceeds 70%' \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
  --statistic Average \
  --period 300 \
  --evaluation-periods 2 \
  --threshold 70 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:AlertTeam

Alarm 작업: SNS, Auto Scaling, EC2

Alarm 작업은 여러 대상으로 전송할 수 있습니다. 이메일이나 SMS를 보내거나 Lambda를 Trigger하는 Amazon SNS 주제, ASG를 축소하거나 확장하는 Auto Scaling 정책, EC2 인스턴스를 중지, 종료, 재부팅 또는 복구하는 EC2 작업이 있습니다. 각 상태(OK, ALARM, 데이터 부족)에 서로 다른 작업 집합을 지정할 수 있습니다. 예를 들어 ALARM에서는 팀에 알리고, OK에서는 복구를 알리며, 데이터 부족에서는 모니터링 공백을 포착하도록 알림을 보낼 수 있습니다.

# Alarm that stops an idle EC2 instance when CPU < 1% for 30 min
aws cloudwatch put-metric-alarm \
  --alarm-name LowCPUStopInstance \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
  --statistic Average \
  --period 300 \
  --evaluation-periods 6 \
  --threshold 1 \
  --comparison-operator LessThanThreshold \
  --alarm-actions arn:aws:swf:us-east-1:111122223333:action/actions/AWS_EC2.InstanceId.Stop/1.0

누락된 데이터 처리

CloudWatch가 alarm을 평가할 때 일부 데이터 포인트가 누락되면 이를 어떻게 처리할지 결정해야 합니다. 옵션은 다음과 같습니다. notBreaching(누락된 데이터를 임계값 이내로 처리하여 다른 데이터가 정상이면 alarm을 OK로 유지), breaching(누락된 데이터를 임계값 초과로 처리하여 alarm을 ALARM으로 변경), ignore(alarm 상태를 변경하지 않음), missing(alarm을 데이터 부족 상태로 변경)입니다. 잘못된 옵션을 선택하면 오탐이나 감지되지 않는 장애가 발생할 수 있으며, 이는 SAA-C03 시험에서 중요한 세부 사항입니다.

# Set missing data treatment on an alarm
aws cloudwatch put-metric-alarm \
  --alarm-name WebsiteLatencyAlarm \
  --metric-name TargetResponseTime \
  --namespace AWS/ApplicationELB \
  --statistic Average \
  --period 60 \
  --evaluation-periods 3 \
  --threshold 2.0 \
  --comparison-operator GreaterThanThreshold \
  --treat-missing-data breaching \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:Ops

Alarm 해상도 및 평가 기간

Alarm 해상도는 기간 × 평가 기간 수로 계산합니다. 예를 들어 기간이 60초이고 평가 기간이 5개라면 alarm은 1분 간격의 연속된 데이터 포인트 5개를 고려합니다. 기본적으로 5개 기간 모두 임계값을 초과해야 alarm이 ALARM으로 변경됩니다. datapoints-to-alarm을 구성하면 N개 기간 중 M개만 임계값을 초과해도 되도록 설정할 수 있습니다. 예를 들어 5개 중 3개로 설정하면 일시적인 급증으로 인한 오탐을 줄일 수 있습니다.

# Alarm that requires 3 out of 5 periods to breach (reduces false positives)
aws cloudwatch put-metric-alarm \
  --alarm-name CPUSpike \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=AutoScalingGroupName,Value=my-asg \
  --statistic Average \
  --period 60 \
  --evaluation-periods 5 \
  --datapoints-to-alarm 3 \
  --threshold 80 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:autoscaling:us-east-1:111122223333:scalingPolicy:...

복합 Alarm: 여러 Alarm 결합

복합 alarm은 부울 논리(AND, OR, NOT)를 사용해 여러 다른 alarm의 상태를 평가합니다. 규칙 표현식의 결과가 true일 때만 ALARM 상태로 전환됩니다. 복합 alarm은 알림 소음 감소에 사용됩니다. 예를 들어 CPU 사용률이 높은 것만으로는 일괄 처리 중 정상일 수 있으므로, CPU 사용률이 높은 alarm과 지연 시간이 높은 alarm이 동시에 발생할 때만 알림을 보낼 수 있습니다. 유지 관리 기간에는 복합 alarm을 사용해 하위 alarm을 억제할 수도 있습니다.

# Create a composite alarm (alerts only when BOTH CPU and latency are high)
aws cloudwatch put-composite-alarm \
  --alarm-name HighLoadComposite \
  --alarm-rule 'ALARM("HighCPUAlarm") AND ALARM("HighLatencyAlarm")' \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:CriticalOps \
  --alarm-description 'Alert only when both CPU and latency are elevated'

복합 Alarm을 사용한 Alarm 억제

복합 alarm은 alarm 억제 작업을 지원하므로, 계획된 유지 관리 중 하위 alarm을 억제하도록 복합 alarm을 구성할 수 있습니다. 예를 들어 배포 기간에 'MaintenanceMode' alarm과 OR 논리로 결합된 복합 alarm을 설정하면 유지 관리가 진행되는 동안 모든 하위 alarm 알림을 억제할 수 있습니다. 이렇게 하면 업그레이드를 위해 의도적으로 서비스를 오프라인으로 전환할 때 알림이 폭주하는 것을 방지할 수 있습니다.

# Composite alarm with suppression: alert UNLESS maintenance is active
aws cloudwatch put-composite-alarm \
  --alarm-name ProductionAlerts \
  --alarm-rule 'ALARM("HighCPUAlarm") AND NOT ALARM("MaintenanceModeAlarm")' \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:ProductionOps

Auto Scaling 정책과의 통합

Auto Scaling 그룹은 CloudWatch alarm을 단계 조정 및 단순 조정 정책의 Trigger로 사용합니다. alarm이 ALARM 상태가 되면 조정 정책이 실행됩니다. 단계 조정에서는 서로 다른 임계값 범위에 대해 여러 조정 값을 정의합니다. 예를 들어 CPU가 70~80%이면 인스턴스 1개를 추가하고, 80~90%이면 3개를 추가하며, 90%를 초과하면 5개를 추가할 수 있습니다. alarm은 평가 시점의 초과 수준을 기준으로 처음 적용 가능한 단계를 Trigger합니다.

# Create a scale-out alarm linked to an ASG scaling policy
aws cloudwatch put-metric-alarm \
  --alarm-name ScaleOutTrigger \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=AutoScalingGroupName,Value=my-asg \
  --statistic Average \
  --period 60 \
  --evaluation-periods 2 \
  --threshold 70 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:autoscaling:us-east-1:111122223333:scalingPolicy:POLICY_ARN

CloudWatch Billing Alarm

예상 AWS 요금이 임계값을 초과할 때 알림을 받도록 CloudWatch에서 Billing alarm을 생성할 수 있습니다. Billing Metric은 리소스가 실행되는 위치와 관계없이 us-east-1 리전에서만 게시되며 약 6시간마다 업데이트됩니다. Billing alarm을 활성화하려면 먼저 AWS Billing 콘솔에서 Billing Alerts를 켜야 합니다. 더 정밀한 도구는 AWS Budgets이지만 CloudWatch Billing alarm도 시험에 출제되는 유효한 옵션입니다.

# Create a billing alarm for $100 threshold
aws cloudwatch put-metric-alarm \
  --region us-east-1 \
  --alarm-name MonthlyBillingAlert \
  --alarm-description 'Alert when estimated charges exceed $100' \
  --metric-name EstimatedCharges \
  --namespace AWS/Billing \
  --dimensions Name=Currency,Value=USD \
  --statistic Maximum \
  --period 86400 \
  --evaluation-periods 1 \
  --threshold 100 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:BillingAlerts

Alarm 테스트 및 모니터링

set-alarm-state 명령을 사용해 alarm 상태를 수동으로 설정하면 실제 임계값 초과를 기다리지 않고 alarm 작업을 테스트할 수 있습니다. 이는 SNS 주제, Auto Scaling 정책, Lambda 함수가 올바르게 응답하는지 확인하는 데 유용합니다. 운영 환경이 아닌 곳에서 alarm 작업을 항상 테스트하고, 운영 알림에 alarm을 사용하기 전에 SNS 주제에 올바른 이메일 구독이 확인되었는지 검증해야 합니다.

# Manually trigger an alarm for testing (does NOT persist — reverts on next evaluation)
aws cloudwatch set-alarm-state \
  --alarm-name HighCPUAlarm \
  --state-value ALARM \
  --state-reason 'Testing alarm action'

# Watch alarm state history
aws cloudwatch describe-alarm-history \
  --alarm-name HighCPUAlarm \
  --history-item-type StateUpdate \
  --query 'AlarmHistoryItems[].{Time:Timestamp,Summary:HistorySummary}'

빠른 확인

이 lesson에서 다룬 AWS Solutions Architect(SAA-C03) 개념을 이해했는지 테스트해 보세요.

Lesson 복습

이 lesson에서는 다음을 배웠습니다. alarm에는 세 가지 상태(OK, ALARM, 데이터 부족)가 있으며 SNS, Auto Scaling, EC2 작업을 Trigger할 수 있습니다. 또한 datapoints-to-alarm을 사용하면 M-of-N 평가로 오탐을 줄일 수 있고, 복합 alarm은 부울 논리로 여러 alarm을 결합하고 알림 소음을 억제합니다. 다음으로는 중앙 집중식 로그 관리를 위한 CloudWatch Logs와 Log Insights를 살펴봅니다.

자주 묻는 질문

“CloudWatch 경보 및 복합 경보” 강의는 무료인가요?

네 — “CloudWatch 경보 및 복합 경보” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AWS Solutions Architect 강의 전체를 잠금 해제할 수 있습니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

“CloudWatch 경보 및 복합 경보”에서 뭘 배우나요?

임계값 기반 경보를 설정해 Auto Scaling 또는 SNS 알림을 트리거하고, 여러 경보를 복합 경보로 결합해 불필요한 알림을 줄입니다. 브라우저에서 직접 실행하는 실습 코드로 AWS Solutions Architect을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AWS Solutions Architect을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AWS Solutions Architect은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“CloudWatch 경보 및 복합 경보” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AWS Solutions Architect 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AWS Solutions Architect 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. CloudWatch 지표, 네임스페이스 및 차원
  2. CloudWatch 경보 및 복합 경보
  3. CloudWatch 로그 및 Log Insights
  4. CloudWatch 대시보드 및 Container Insights
← AWS Solutions Architect(으)로 돌아가기