CloudWatch
CloudWatch는 애플리케이션을 모니터링하고, 시스템 전반의 성능 변경 사항에 대응하며, 리소스 사용률을 최적화하고, 운영 상태에 대한 통합된 보기를 확보하는 데 필요한 데이터와 실행 가능한 통찰력을 제공
Lambda
Lambda에서는 사실상 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행
SNS
Amazon Simple Notification Service(SNS)는 마이크로서비스, 분산 시스템 및 서버리스 애플리케이션을 쉽게 분리할 수 있게 해 주는 내구적이고 안전한 고가용성의 완전 관리형 게시/구독 메시징 서비스
인스턴스에 특정문제가 발생하였을 때 (임계치가 넘었을 때)
CloudWatch 가 실행되고 CloudWatch 에 등록한 SNS 에 전송이 되며, SNS 에서 Lambda 에 전송하여 특정 기능을 실행 할 수 있습니다.
CloudWatch 에서는 인스턴스의 특정 상태들을 체크하여 임계치를 지정할 수 있는데, 그 임계치까지 도달하게 되면 CloudWatch 가 실행됩니다. 그럼 CloudWatch 에서는 특정 대상에 알릴 수 있는 SNS 를 실행하게되고, SNS 는 특정 이메일이나 Lambda 에 알리게 됩니다.
Lambda 에 알리게되면 트리거가 발생하고 Lambda에서 생성한 함수가 실행됩니다. 특히 Lambda 는 프로비저닝하지않기 때문에 특정 기능에 최적화가 되어있어야 할 듯 싶습니다.
이후 Slack 에 Notification 하고싶다면 Webhook Slack 을 생성하여 해당 동작을 Lambda 에서 실행하도록 합니다.
테스트로 UnHealthyHostCount 가 1 이상일 경우 Slack 으로 노티를 가도록 하겠습니다.
대상의 healthy status 를 확인 (healthy 일 때가 정상)
CloudWatch 에 들어가서 경보생성을 클릭
경보에 대한 지표를 설정하면 해당 경보상태에 대한 트리거에 따라
Simple Notification 을 줄 수가 있습니다.
SNS ( Simple Notification Service ) 를 이용하기 위해 SNS 를 생성해줍니다.
SNS 를 생성할 때 해당 SNS 에 대한 구독정보를 설정합니다.
저는 Lambda 로 구독을 해두도록 하였습니다.
Email 로도 구독을 신청하면 해당 Email 에 notification 이 발생합니다.
Lambda 에서는 Slack 으로 해당 경보에 대한 정보들을 보내도록 하였습니다.