eelseungmin

AWS SNS, Chatbot을 통해 Slack 알림 받기

by eelseungmin

적용하게 된 배경

기존에 AWS CloudWatch를 통해 EC2, RDS, Application의 몇 가지 메트릭을 보여주는 대시보드를 구성했다.

다만 간혹 EC2 인스턴스가 알 수 없는 이유로 먹통이 되는 현상이 발견되었고, SSH 툴을 이용해 터미널 접속을 시도하기 전까지 이를 인지하지 못하는 일이 있었다.

따라서 특정 조건 만족 시 Slack 채널에서 알림을 받을 수 있도록 설정하고자 했다.

이번에 적용한 알림은 두 가지이다.

1. EC2 인스턴스의 CPU 사용률이 5분 이상 70%를 초과하는 경우

2. EC2 인스턴스의 상태 검사(시스템, 인스턴스)가 둘 중 하나라도 실패하는 경우

 

CPU 사용률의 경보 기준은 다음 레퍼런스를 참조하여 설정했다.

리디 기술블로그 - DevOps 팀을 위한 모니터링 팁

 

AWS 경보 흐름 이해하기

경보 흐름은 위와 같다. CloudWatch 경보를 정상적으로 작동시키기 위해 SNS, Chatbot 구성이 필요함을 알 수 있을 것이다.

 

AWS SNS, Chatbot 설정하기

1. AWS SNS에 들어가 주제를 생성한다.

이때 표준을 선택하고 원하는 이름을 입력한 뒤 주제 생성을 클릭한다.

밑에 이런저런 부가설정들이 있으나 이름만 설정해도 기본적인 이용에는 무리가 없다.

 

2. AWS Chatbot에 들어가 새 클라이언트 구성을 클릭하고 Slack을 선택한다.

위와 같은 창이 뜨는데 허용해 주어야 Slack으로 메시지를 받을 수 있다.

 

3. 생성한 클라이언트에서 새로운 채널을 생성하기 위해 새 채널 구성을 클릭한다.

 

4. 채널 구성을 위한 정보를 입력한다.

 메시지를 받으려는 Slack 채널이 퍼블릭이라면 목록에 채널이 자동적으로 뜰 것이다. 프라이빗의 경우 별도의 ID가 필요한 것으로 보이는데 이는 Slack 채널에서 확인할 수 있을 것으로 생각된다.

권한의 경우 해당 채널의 있는 모든 사용자가 알림 메시지를 확인할 수 있도록 할 것이기 때문에 채널 역할을 선택하고 알림 권한, ReadOnlyAccess를 그대로 두었다. 이렇게 해도 단순 알림 목적으로 이용하는 데 문제가 없다.

마지막으로 SNS 주제에서 아까 만들었던 주제의 리전을 선택하고 해당 주제를 선택하면 된다.

 

5. AWS Chatbot에서 테스트 메시지를 전송해서 제대로 설정되었는지 확인할 수 있다.

 

조건에 따른 경보 생성하기

1. EC2 인스턴스 - 작업 - 모니터링 및 문제 해결 - CloudWatch 경보 관리를 클릭한다.

 

2. 경보 생성을 고른 뒤 SNS 주제를 선택한다. 다음 예시에서는 CPU 사용률을 선택했다.

 

3. 부가 설정들은 원하는 대로 구성하고 경보를 생성한다.

 

생성을 마친 뒤 테스트를 위해 CPU 사용률 제한을 0.3까지 낮춰보았더니 아래와 같이 정상적으로 메시지를 받을 수 있었다.

 

참조

https://ridicorp.com/story/monitoring-howto/

블로그의 정보

eel.log

eelseungmin

활동하기