CloudWatch(+Alarm) + Discord(SNS + Lambda)
AWS CloudWatch 결정 이유
모니터링 툴로 AWS CloudWatch와 (Prometheus + Grafana + Loki) 두가지 툴 사이에서 고민하였습니다.
결론적으로 CloudWatch를 선택하였습니다. 우선, 러닝 커브가 현저히 적었고, 서버에 별도의 리소스 설치와 보안 설정 없이 동작 가능하단 사실이 주 요인입니다. 또, AWS SNS(Amazon Simple Notification Service)와 AWS Lambda를 이용하여 이상 지표가 발생할 경우 SNS 알람을 줄 수 있어 Grafana의 장점 또한 만족할 수 있을 것입니다.
CloudWatch에서 모니터링되는 원리
- CD가 실행되며 서버 내 Docker가 run 되면 Docker 내부 Bash에서 프로젝트가 실행
- Docker 바인드 마운트를 통해 서버에 로그를 공유하도록 함
- 복사된 로그 파일들을 CloudWatch에게 일정 시간으로 보냄
AWS CloudWatch → Discord 구성도

모니터하고 있는 지표/로그 종류
-
CPU 사용률 (CPU Utilization)
- 서버의 과부하 상태로 성능 저하나 시스템 장애를 예방하기 위해 감시합니다.
-
메모리 사용률 (Mem_Used_Percent)
- 메모리가 부족으로 시스템이 느려지거나, 크래시(소프트웨어나 시스템이 정상적으로 작동하지 못하고 갑자기 멈추거나 종료되는 상황) 예방을 위해 감시합니다.
-
네트워크 트래픽 (NetworkIn / NetworkOut)
서버의 비정상적인 네트워크 트래픽을 감시하고 네트워크가 병목 현상을 일으키고 있는지 감시합니다.
-
로그들
- INFO Log
- Warn Log
- Error Log
이상 지표 알람 설정 정보
- CPU Utilization
- CPU 사용률은 80% 이상으로 3회 반복될 경우 알람이 울리도록 설정하였습니다.
- Mem_Used_Percent
- Mem 사용률은 75% 이상이 발생한 경우 알람이 울리도록 설정하였습니다.
예상 AWS 월별 금액