[AWS] CloudWatch와 Slack 연동
1. CloudWatch Alarm과 Slack 연동
SNS와 Lambda를 사용해 CloudWatch 경보를 Slack에서 받아본다.
흐름은 다음 그림과 같다.
CloudWatch Alarm 이 울리면 SNS가 호출되고 이어서 Lambda가 호출된다. Lambda에는 알람 이름과 state에 따라 Slack에 메세지를 생성하여 보내도록 작성된 코드가 있다.
1) Slack Webhook 생성
Slack -> 워크스페이스 메뉴 -> 설정 및 관리 -> 앱 관리 로 이동한다.
수신 웹후크를 검색해 Slack에 추가한다.
추가하면 웹후크용 URL이 생성되는데, 이를 복사해서 저장해둔다.
2) SNS 생성
표준 SNS를 생성한다. 설정값은 모두 기본으로 둔다.
3) Lambda 생성
SNS를 구독할 Lambda를 생성한다. 런타임은 Node.js 14.X 를 선택한다.
Slack으로 메세지를 보내는 코드는 아래를 참고한다. 위에서 생성한 Slack Webhook URL을 사용한다.
생성 후 SNS 트리거를 추가한다.
트리거 생성 후 SNS 주제를 확인하면 Lambda를 구독중임을 확인할 수 있다.
4) CloudWatch 경보 생성
CloudWatch 경보를 생성한다. 테스트를 위해 지표는 CPU 사용량이 10% 이상일 때 울리도록 하였다.
경보가 울리면 위에서 생성해둔 SNS에 In alarm 상태를 전송한다.
경보 이름은 CPU, MEM, DISK, EBS, NETWORK 중 반드시 하나의 단어만 포함하여야 javascript 함수가 정상적으로 (대소문자 구분 X) 동작한다.
2. 결과 확인
정상적으로 동작하는지 확인하기 위해 인스턴스에 접속하여 cpu 부하를 준다.
stress 툴을 사용하였다.
# Amazon-Linxu 2
$ sudo amazon-linux-extras -y epel
$ sudo yum -y install stress
$ stress -c <cpu코어개수>
부하를 주고 기다리면 Slack으로 경보 메세지가 온 것을 확인할 수 있다.
댓글남기기