CloudWatch(+Alarm) + Discord(SNS + Lambda)

AWS CloudWatch 결정 이유

모니터링 툴로 AWS CloudWatch와 (Prometheus + Grafana + Loki) 두가지 툴 사이에서 고민하였습니다.

결론적으로 CloudWatch를 선택하였습니다. 우선, 러닝 커브가 현저히 적었고, 서버에 별도의 리소스 설치와 보안 설정 없이 동작 가능하단 사실이 주 요인입니다. 또, AWS SNS(Amazon Simple Notification Service)와 AWS Lambda를 이용하여 이상 지표가 발생할 경우 SNS 알람을 줄 수 있어 Grafana의 장점 또한 만족할 수 있을 것입니다.

CloudWatch에서 모니터링되는 원리

  1. CD가 실행되며 서버 내 Docker가 run 되면 Docker 내부 Bash에서 프로젝트가 실행
  2. Docker 바인드 마운트를 통해 서버에 로그를 공유하도록 함
  3. 복사된 로그 파일들을 CloudWatch에게 일정 시간으로 보냄

AWS CloudWatch → Discord 구성도

Untitled

모니터하고 있는 지표/로그 종류

  1. CPU 사용률 (CPU Utilization)

  2. 메모리 사용률 (Mem_Used_Percent)

  3. 네트워크 트래픽 (NetworkIn / NetworkOut)

    서버의 비정상적인 네트워크 트래픽을 감시하고 네트워크가 병목 현상을 일으키고 있는지 감시합니다.

  4. 로그들

    1. INFO Log
    2. Warn Log
    3. Error Log

이상 지표 알람 설정 정보

  1. CPU Utilization
  2. Mem_Used_Percent

예상 AWS 월별 금액