Code States/TIL

[0601] 서비스 모니터링 - Auto Scailing + CloudWatch를 이용한 알림

ki1111m2 2023. 6. 1. 13:26

Bare Minimum Requirement

  • EC2 서버를 ASG를 통해 구성합니다. 구성은 다음을 따릅니다.
  • CloudWatch 알람을 통해 ASG의 스케일 인/아웃을 진행합니다.
  • 스케일 인/아웃이 진행될 때 디스코드에 알림을 보냅니다.
  • 메트릭을 바탕으로 장애 발생 예상 시점에 디스코드에 알림을 보냅니다.
    • CPU 사용률(CPUUtilization) 값이 특정 값 이상일 때 경보가 발생하게 하세요

SNS 주제를 생성한다

Lambda 함수를 생성한다

람다 함수에 트리거를 추가한다

람다 함수의 소스 코드를 수정한다

web hook을 전송할 url을 람다 함수의 환경변수에 추가한다

Auto Scailing Group을 만들기 위한 시작 템플릿을 생성한다

오토 스케일링 그룹을 생성한다

오토 스케일링 그룹에 동적 크기 조정 정책을 생성한다

아래의 단계를 따라 scale out과 scale in의 CloudWatch 경보를 각각 생성한다

지표는 EC2 -> Auto Scailing Group -> CPU Utilization 으로 설정한다

디스코드에 성공적으로 web hook을 날린 것을 볼 수 있다

오토 스케일링 그룹을 통해 생성된 인스턴스에 접속하여 부하를 걸어준다

top 명령어를 통해 인스턴스의 상태를 보면 cpu 사용량이 50% 이상으로 올라간 것을 볼 수 있다

aws 콘솔 창에서 인스턴스의 상태를 봐보면 마찬가지로 적용되어있다

터미널에서는 부하가 바로 걸렸는데 콘솔에서는 지표 수집 시간이 5분마다 되기 때문에 반영에 시간이 걸렸다

스케일 아웃의 경보가 경보상태로 바뀐 것을 볼 수 있다

스케일 아웃 되는 웹훅 알람 또한 정상적으로 보내진다

오토 스케일링으로 인해 새로운 인스턴스가 자동으로 생성된다

인스턴스가 새로 생긴 후 클라우드 워치의 스케일 인 경보는 정상 상태로 바뀐 것을 볼 수 있다

stress 명령어를 취소하여 cpu 사용량을 다시 정상적으로 바꾸면 스케일 인 경보가 발동되고, 오토 스케일링으로 인해 인스턴스가 한 개 종료된다

추가적으로 웹훅 이미지를 변경해보았다(인터넷이 이미지 등록 후 이미지 url을 람다 함수에 적용)