EC2 Monitoring System

EC2 Monitoring System

216대 서버를 5분마다 자동 감시하고, 장애 시 Slack + 전화 자동 발신 온콜 체계를 갖춘 서버리스 모니터링 시스템입니다.
프로젝트 기여도 80% (설계·개발·운영 수행)

1. Overview

216대의 EC2 서버를 실시간으로 모니터링하고, 장애 발생 시 5분 이내에 자동 알람 + 전화 발신까지 수행하는 서버리스 모니터링 시스템을 설계·구축했습니다.


2. Background — 왜 만들었는가

실제 장애 사례 (2026.03.05)

AWS 물리 호스트 장애로 운영 서버 1대가 응답 불가 상태에 빠졌으나, DevOps 파트의 장애 인지가 6시간 이상 지연된 사건이 발생했습니다.

시간 (KST)내용
02:15EC2 System Status Check Failed (AWS 물리 호스트 장애)
02:20NLB 헬스체크 실패 → 자동 트래픽 차단 (서비스 영향 없음)
02:20AWS system-reboot 예약 이메일 수신
08:31DevOps 파트 장애 인지 (6시간 16분 후)

서비스 자체는 NLB 이중화 덕분에 영향이 없었으나, 인스턴스 장애를 빠르게 인지하지 못한 것이 문제로 지적되었습니다.

근본 원인

  • EC2 상태 변화에 대한 자동 알람 체계 부재
  • SSM 연결 끊김, Target Group Unhealthy 등에 대한 감시 없음
  • 야간/주말 장애 시 담당자에게 통보할 온콜 체계 없음

이 사건의 개선책으로 EC2 모니터링 시스템을 설계·구축하게 되었습니다.


3. Problem Statement

문제영향
216대 서버 상태를 수동으로 확인장애 인지까지 수십 분~수 시간 소요
장애 알림 체계 부재사용자 신고 후에야 인지
온콜 체계 없음야간/주말 장애 대응 불가

4. Architecture


EC2 Monitoring

EC2 Monitoring Diagram

  1. Lambda + EventBridge: 5분 주기 실행, 서버리스로 자체 장애 없음
  2. S3 상태 관리: 이전 상태와 비교하여 5분 이상 지속된 문제만 알람 (오알람 방지)
  3. 스누즈 기능: Slack 버튼 클릭으로 15분간 알람 차단 (알람 피로 방지)
  4. 심각도 분리: WARNING은 Slack만, CRITICAL은 Slack + 전화 자동 발신

5. 모니터링 항목

핵심 모니터링 (장애 사례 기반)

#항목방식
1EC2 Instance StatusEC2 API (running 여부)
2SSM 연결 상태SSM API (online 여부)
3Target Group HealthELB API (healthy 여부)

추가 기능 (운영 중 확장)

#항목방식
4Disk 사용량SSM RunCommand (80%+ 알람)
5Batch 실행 여부S3 마커 파일 확인
6인증서 만료일만료 D-30 사전 알람

6. Key Results

지표BeforeAfter
장애 인지 시간수십 분~수 시간 (위 사례: 6시간+)5분 이내
모니터링 대상수동 확인 가능한 범위216대 전체
야간/주말 대응불가전화 자동 발신 + 온콜

7. Used Skills

  • AWS Lambda (Python)
  • Amazon EventBridge
  • Amazon S3 (상태 관리)
  • SSM Parameter Store
  • API Gateway (스누즈 엔드포인트)
  • Slack Webhook + 전화 자동 발신