클라우드활용 11주차 — CloudWatch 심화: 커스텀 지표·경보·대시보드·로그
커스텀 지표 게시, 경보 생성과 ALARM 전이, SNS 알림 연동, 대시보드, 로그 그룹까지 CloudWatch를 CLI로 직접 운영해 본 11주차 기록.
클라우드활용 11주차 — CloudWatch 심화: 커스텀 지표·경보·대시보드·로그
11주차는 CloudWatch를 직접 운영한다. 커스텀 지표 게시, 경보(Alarm) 생성 → ALARM 전이, SNS 알림 연동, 대시보드, 로그 그룹까지 CLI로 다뤘다. 생성한 자원은 끝에서 모두 삭제했다.
핵심 개념
- 커스텀 지표(Custom Metric): AWS 기본 지표 외에, 내 애플리케이션 값(로그인 수·지연시간 등)을
put-metric-data로 직접 게시. 네임스페이스/차원으로 구분한다. - 경보(Alarm): 지표가 임계값 을 평가기간 동안 넘으면 상태가
OK → ALARM. 액션으로 SNS 알림·Auto Scaling 등을 트리거한다. - SNS(Simple Notification Service): 알림 발송 채널(이메일·HTTP 등). 경보의 알림 대상.
- 대시보드(Dashboard): 지표 위젯을 모아 한 화면에서 모니터링.
- 로그 그룹/스트림 + Log Insights: 애플리케이션 로그를 수집하고 SQL 유사 쿼리로 분석.
CloudWatch 운영
커스텀 지표 게시
1
2
3
4
5
6
7
8
9
10
$ aws cloudwatch put-metric-data --namespace Clouduse/Week11 \
--metric-name LoginSuccessCount --value <42,55,60,48> --unit Count # 4개 데이터포인트
$ aws cloudwatch list-metrics --namespace Clouduse/Week11 \
--query "Metrics[].[Namespace,MetricName]" --output text
Clouduse/Week11 LoginSuccessCount
$ aws cloudwatch get-metric-statistics --namespace Clouduse/Week11 --metric-name LoginSuccessCount \
--period 300 --statistics Maximum Average
60.0 51.25 # Maximum=60, Average=51.25
SNS 알림 토픽 + 경보 생성
1
2
3
4
5
6
7
$ aws sns create-topic --name clouduse-week11-alerts → (ARN) ...:clouduse-week11-alerts
$ aws cloudwatch put-metric-alarm --alarm-name clouduse-week11-login-high \
--namespace Clouduse/Week11 --metric-name LoginSuccessCount --statistic Maximum \
--period 300 --evaluation-periods 1 --threshold 50 \
--comparison-operator GreaterThanThreshold \
--alarm-actions <SNS_TOPIC_ARN> --treat-missing-data notBreaching
경보 발동 (ALARM 전이)
임계값 50을 넘는 데이터포인트(60)가 들어오자 경보가 ALARM 상태로 전이됐다.
1
2
3
$ aws cloudwatch describe-alarms --alarm-names clouduse-week11-login-high \
--query "MetricAlarms[0].[StateValue,StateReason]" --output text
ALARM Threshold Crossed: 1 datapoint [60.0] was greater than the threshold (50.0).
“임계값을 넘으면 알림”이라는 모니터링의 핵심 동작이 실제 상태 전이로 나타난다. 실제 운영이라면 이 시점에 SNS로 알림이 발송된다.
대시보드 + 로그 그룹
1
2
3
4
5
6
7
8
9
10
11
$ aws cloudwatch put-dashboard --dashboard-name clouduse-week11 --dashboard-body file://dashboard.json
{ "DashboardValidationMessages": [] } # 검증 통과
$ aws cloudwatch list-dashboards --query "DashboardEntries[].DashboardName" --output text
clouduse-week11
$ aws logs create-log-group --log-group-name /clouduse/week11/app
$ aws logs put-log-events --log-group-name /clouduse/week11/app --log-stream-name s1 \
--log-events timestamp=...,message="INFO 클라우드활용 11주차 로그인 성공"
$ aws logs describe-log-groups --log-group-name-prefix /clouduse/week11 \
--query "logGroups[].logGroupName" --output text
/clouduse/week11/app
대시보드 위젯 정의(dashboard.json) — 커스텀 지표를 시계열로:
1
2
3
4
{ "widgets": [{ "type":"metric","properties":{
"title":"로그인 성공 수 (커스텀 지표)",
"metrics":[["Clouduse/Week11","LoginSuccessCount"]],
"period":300,"stat":"Maximum","region":"ap-northeast-2","view":"timeSeries" }}] }
정리 (자원 삭제)
1
2
3
4
$ aws cloudwatch delete-alarms --alarm-names clouduse-week11-login-high
$ aws cloudwatch delete-dashboards --dashboard-names clouduse-week11
$ aws logs delete-log-group --log-group-name /clouduse/week11/app
$ aws sns delete-topic --topic-arn <SNS_TOPIC_ARN>
정리
개념으로만 봤던 CloudWatch를 직접 운영했다. 특히 경보가 60 > 50 으로 실제 ALARM 에 전이되는 것을 로그로 확인하면, 모니터링이 단순 그래프가 아니라 임계 기반 자동 대응 임을 알 수 있다. 커스텀 지표(put-metric-data)로 AWS 기본 지표에 없는 비즈니스 값(로그인 수)도 올릴 수 있고, 경보 → SNS → (Auto Scaling/이메일)로 이어지는 알림 파이프라인의 출발점을 구성했다.
This post is licensed under CC BY 4.0 by the author.