우당탕탕
AWS CloudWatch 알람 설정하며 제가 겪은 삽질과 해결 방법 공유해요 본문
저도 처음엔 AWS CloudWatch 알람이 뭔지도 모르고, 어떻게 설정하는지 막막했어요. 서비스를 운영하다 보니 장애를 미리 잡는 게 얼마나 중요한지 절실히 느끼게 됐거든요. 그래서 직접 하나하나 세팅해보면서 겪은 삽질과 그 해결법을 나누려고 해요.
이 글에서는 CloudWatch 알람이 뭔지, 왜 필요한지부터 시작해서, 기본적인 알람 만드는 과정과 제가 직접 써본 CLI 명령어까지 구체적으로 알려드립니다. 그리고 세팅 중 흔히 막히는 부분도 자세히 다뤄서, 이 글 하나면 초보자분도 무리 없이 시작할 수 있을 거예요.
AWS CloudWatch 알람, 이게 뭔지부터 알고 시작해요
사실 처음 AWS 쓸 때 "CloudWatch 알람"이라는 단어가 너무 생소했어요. 간단히 말하면, 내 AWS 인프라가 "이상 징후"를 보이면 알려주는 경보 시스템이에요. 예를 들어 서버 CPU가 너무 올라가거나, 네트워크 트래픽이 갑자기 뚝 떨어질 때 알람이 울려서 "뭔가 문제가 생겼다"를 알려주는 거죠.
AWS 관리 콘솔에서 'CloudWatch'라는 서비스를 찾으면 모니터링 대시보드가 나오는데, 여기서 원하는 지표(Metric)를 선택하고 임계치(Threshold)를 정하면 알람이 만들어져요. 예를 들어 EC2 서버 CPU 사용률이 80% 이상 5분 동안 지속되면 경고를 띄우는 식이죠.
저도 처음 만든 AWS CloudWatch 알람 설정 환경
기본적으로 저는 AWS EC2 한 대로 웹 서비스를 운영하고 있었는데, 장애를 미리 감지하는 체계가 전혀 없었어요. 그래서 AWS CLI와 콘솔 두 가지 방법을 병행해서 알람을 만들었고, Node.js 백엔드 로그와도 연동해 봤어요.
AWS CLI 2.9.19, Ubuntu 22.04 LTS, EC2 인스턴스는 t3.medium을 쓰고 있었어요.
CloudWatch 알람 이렇게 만들면 됩니다
우선 AWS 콘솔에서 간단하게 CPU 사용률 알람을 만드는 순서부터 설명할게요. 먼저 CloudWatch 대시보드에 들어가서 '알람(Alarms)' -> '알람 생성(Create Alarm)' 버튼부터 누르시면 됩니다.
1. 지표 선택
- EC2 -> Per-Instance Metrics에서 대상 인스턴스의 CPUUtilization 선택
2. 임계치 설정
- 조건: CPUUtilization > 80% (5분 연속 발생 시)
3. 알림 받을 대상 설정
- SNS(Simple Notification Service) 주제를 생성해서 이메일 주소 연결
이 과정을 마치면, CPU 사용률이 정해진 임계치를 넘으면 이메일로 바로 알림이 옵니다. 처음엔 "진짜 오려나?" 하면서 테스트도 많이 했는데, 생각보다 빠르고 정확히 알림이 와서 놀랐어요.
CLI로도 똑같은 알람을 만들어 볼게요. 다음은 제가 직접 쓴 명령어 입니다.
# SNS 주제 만들기
aws sns create-topic --name MyAlarmTopic
# 이메일 구독 추가 (실제 이메일 주소로 교체!)
aws sns subscribe --topic-arn arn:aws:sns:ap-northeast-2:123456789012:MyAlarmTopic --protocol email --notification-endpoint your-email@example.com
# CloudWatch 알람 생성
aws cloudwatch put-metric-alarm \
--alarm-name HighCPUAlarm \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--statistic Average \
--period 300 \
--threshold 80 \
--comparison-operator GreaterThanThreshold \
--dimensions Name=InstanceId,Value=i-0abcdef1234567890 \
--evaluation-periods 1 \
--alarm-actions arn:aws:sns:ap-northeast-2:123456789012:MyAlarmTopic \
--unit Percent
위 명령어에서 중요한 부분은 --dimensions에 내 EC2 인스턴스 아이디를 꼭 정확히 집어넣어야 한다는 점이에요. 그리고 이메일은 SNS 쪽에서 '구독 확인' 메일을 꼭 승인해줘야 알람을 받을 수 있었어요.
여기서 많이 틀립니다, AWS 권한과 리소스 연결
사실 알람 세팅하다가 제일 힘들었던 게 IAM(Identity and Access Management) 권한 문제였어요. 처음에 알람이 정상적으로 동작 안 해서 한참 헤맸는데, 알람이 SNS 주제를 호출할 권한이 없어서 실패했던 거였거든요.
이걸 해결하려면 IAM에서 알람을 등록하는 역할(Role)이나 사용자(User)에 적절한 정책을 붙여줘야 해요. 저 같은 초보자는 AWS에서 제공하는 CloudWatchFullAccess 권한을 잠깐 붙이고 테스트하는 걸 추천해요.
그리고 SNS 주제 ARN이나 인스턴스 아이디 등 리소스 식별자가 틀리면 알람이 아예 먹통이 돼서, AWS 리소스 화면에서 정확한 값을 꼭 복사해서 붙여넣기 하는 게 중요합니다.
삽질했던 에러와 해결 과정 공유해요
"알람은 만들었는데 이메일 알림이 안 오네요" 문제, 저도 한참 고민했었어요. 그래서 CLI 로그를 자세히 봤더니 아래 같은 에러 메시지가 떴죠.
SubscriptionConfirmation: You have chosen to subscribe to the topic
알고 보니 SNS 구독을 이메일로 신청하고, 메일함에서 승인을 눌러줘야 비로소 알람 이메일을 받을 수 있다는 걸 몰랐던 거예요. 이걸 승인 안 하면 계속 알림이 안 와서 진짜 심란했어요.
또 한 가지는 기간 설정인데, 기본이 5분 단위라서 바로 알람 오는 줄 알고 테스트했는데 바로 안 와서 또 삽질했어요. 실제론 5분 연속 임계치를 넘는 상황에서만 알람이 오니까, 짧은 테스트용으로는 기간을 60초로 줄여서 테스트하는 게 더 편하더라고요.
심화: 알람 구성할 때 기억하면 좋은 팁
혹시 인프라가 점점 커지면 알람도 복잡해질 텐데요, 이럴 때 유용한 건 "복합 알람(Composite Alarms)"이에요. 여러 개 알람 상태를 조합해서 최종 알람을 내는 거죠. 예를 들어 CPU도 높고 네트워크 에러도 동시에 났을 때만 알림 울리게 설정할 수 있어요.
그리고 SNS 외에도 Slack, PagerDuty 같은 서비스와 연동할 수 있는데, 이를 위해 AWS Lambda를 중간에 두고 Webhook 호출하는 방식도 많이 쓰더라고요. 저도 나중에 시도해볼 계획이에요.
CLI로 알람 상태 조회도 가능한데, 아래 명령어로 현재 알람 목록과 상태를 볼 수 있습니다.
aws cloudwatch describe-alarms --alarm-names HighCPUAlarm
자주 물어보시는 것들
Q. CloudWatch 알람이 여러 종류가 있는데, 어떤 걸 써야 하나요?
A. 일반적으로 모니터링하려는 서비스 종류에 따라 다릅니다. EC2 서버라면 CPU, 네트워크, 디스크 지표부터 확인하시고, RDS면 DB 연결이나 쿼리 지연도 체크해보세요. 처음엔 CPU 사용률 같은 대표 지표부터 시작하는 게 쉽고 좋아요.
Q. 알람 테스트 해보려면 어떻게 하나요?
A. 임계치 값을 평소보다 훨씬 낮게 잡고, CPU 부하를 일부러 일으켜서 테스트할 수 있어요. 예를 들어 임계치를 1%로 맞추고, 서버에서 부하 스크립트를 돌리면 바로 알람이 울립니다.
Q. CloudWatch 로그랑 알람이랑 어떻게 연결해요?
A. CloudWatch Logs에서 필터 로그 패턴을 만들어서 특정 문구(에러, 예외 등)가 감지되면 알람이 뜨게 할 수 있어요. 이건 조금 더 복잡하지만, 성공하면 애플리케이션 장애 모니터링에 큰 도움이 됩니다.
제가 직접 세팅하고 삽질하면서 알게 된 점들을 최대한 쉽게 풀어봤는데, 막혀도 차근차근 한 단계씩 따라가면 어렵지 않아요. AWS CloudWatch 알람으로 장애를 미리 잡는 경험이 점점 늘면서 서비스 신뢰도가 훨씬 좋아진 걸 느꼈습니다.
'Tech > AWS' 카테고리의 다른 글
| AWS Secrets Manager로 DB 비밀번호 관리해보니 꼭 챙겨야 할 체크리스트 (0) | 2026.06.20 |
|---|---|
| AWS CodeDeploy로 무중단 배포 적용하며 겪은 삽질과 해결법 (0) | 2026.06.08 |
| AWS VPC 서브넷 구성 처음 할 때 헷갈렸던 개념과 꼭 확인할 체크리스트 (0) | 2026.06.08 |
| AWS Route53 도메인 연결할 때 제가 막혔던 DNS 설정 단계별 해결법 (0) | 2026.06.07 |
| AWS SES로 이메일 발송 구현하며 막힌 2026년 변화와 해결법 (0) | 2026.06.06 |
