[AWS] AWS EC2인스턴스 경보설정(AWS CloudWatch ↔️ SNS ↔️ Chatbot) / 서비스 연동을 통한 EC2 서버 상태 확인하기
AWS 서버를 사용하다보면 서버가 많아지고, 서버가 갑작스럽게 문제가 생겼을 때 빠르게 자동으로 처리하는 방법이 있다.
물론, 모든 문제를 해결할 수 있는 것은 아니다.
지금 적는 내용은 AWS EC2인스턴스에 서버에서 상태검사가 일부분 오류가 발생해서 서버가 작동안했을 때 여러가지 서비스를 연동해서 재부팅하고, 알림을 보내는 설정이다.
AWS EC2를 생성하면 CloudWatch를 통해서 경보를 설정할 수 있다.
다음과 같이 AWS EC2 인스턴스에서 상태검사에 모두 통과하지 않는 경우가 발생한다.
그러면 상태 및 경보에서 인스턴스 연결성 검사 실패 및 EBS연결성 검사 실패가 뜬다.
물론, 해당 문제를 해결하기 위해서는 원론적으로 파악을 해서 EBS와 EC2 설정을 다 봐야하지만, 현재는 빠르게 대처할 수 있는 방법중 한가지를 작성하는 것이다.
AWS SNS 설정
생성된 SNS에서 받아 볼 서비스를 구독생성으로 생성해준다.
본인이 받고자 하는 프로토콜을 선택한다. 보통은 SMS와 이메일로 연동하면 바로바로 쉽게 받아볼 수 있어서 편하다.
위와 같이 설정하면 경보가 발생하면 해당 프로토콜로 경보가 발송된다.
AWS CloudWatch 경보
- 원하는 인스턴스를 선택 ➡️ 작업 ➡️ 모니터링 및 문제해결 ➡️ CloudWatch 경보 관리
- 경보알림 ➡️ SNS에서 생성한 주제를 선택하면 된다.
- 경보작업은 여러가지가 있다. 본인의 상황에 맞게 선택하면된다.
- 필자는 서버를 계속 사용해야하기 때문에 재부팅을 선택
- 경보작업은 해당 경보 이후에 작업을 말하는 것이다.
- 임계값에서 데이터가 상태 검사 실패 : 인스턴스 선택
- 연속시간 2, 기간 1분
- 연속으로 1분동안 2번의 경보 임계값을 확인한다는 뜻이다.
- 해당 값은 본인이 서버 사용에 맞춰서 셋팅해도 무방하다.
- 경보이름과 설명은 SNS에 설정한 프로토콜에 실제로 발송되는 텍스트 값이다.
- 서버가 많은 경우 구분하기 위해서 서버 번호/목적에 맞는 네이밍을 하는 것을 추천한다.
사실은 여기까지 셋팅만 해도 SNS에서 설정한 주제의 프로토콜로 경보는 온다. }
단, 슬랙을 사용한다면 AWS Chatbot과 연동하면 슬랙과 연동이 된다.
AWS ChatBot
Chatbot 서비스에 가면 채팅클라이언트를 선택할 수 있다.
총3개의 클라이언트이며 Amazon Chime, Microsoft Teams, Slack이다.
위와 같이 Slack과 연동하는 창이 나오며 허용을 누르면 된다.
생성된 채널에서 슬랙 채널을 구성한다.
- 구성이름은 해당 AWS Chatbot에 대한 이름이다.
- Slack 채널을 선택
- 퍼블릭으로 할 경우 밑에서 자동으로 검색이 가능하다.
- 프라이빗으로 할 경우는, 프라이빗 채널 ID를 가져와야한다.
- 슬랙 채널 ➡️ 우클릭 ➡️ 채널 세부정보 보기 ➡️ 가장 하단에 채널 ID를 가져온다.
- 해당 Chatbot은 사용하기 위해서 IAM이 설정되어 있어야한다. 기존에 있다면 생성하지 말고, 없다면 새로 IAM을 생성한다.
- 정책 템플릿은 본인이 사용하는 환경에 맞게 설정한다.
- 가드레일의 경우는 AWS 서비스를 어디까지 해당할지인데 서버에 대한 정보만 가져오면 되기 때문에 ReadOnlyAccess만 부여했다.
- SNS주제는 본인이 생성한 SNS 주제를 선택한다.
위와 같이 설정하면 아래와 같은 실제 결과값을 받을 수 있다.
EMAIL 알람
SMS 알람
AWS Chatbot 알람
위와 같은 설정으로 서버에 문제가 생겼을 때, 재부팅 자동화로 알림을 받고 서버를 관리할 수 있는 환경 셋팅이 가능하다.
생각보다 코드작업을 요하거나 그렇지는 않으니 누구나 쉽게 시도해 볼 수 있다.