[AWS]EC2 경보 알림

Eden·2023년 12월 5일
0

git hub CI/CD 적용 과정에서 ec2 인스턴스 CPUUtilization 값이 100까지 치솟으며 서버가 죽는 현상이 반복되었다. 아직 이 부분에 대한 원인 파악이 되지 않았으며 해당 현상이 깃 자동배포 시점으로 부터 하루정도 지나 발생한다는 점에서 경보 알림의 필요성을 깨닫게 되었다.

1. aws SNS (Simple Notification Service)에 주제를 생성한다.

2. aws SNS에 구독을 생성하고 주제에 연결 시킨다.

  • 이메일 알림

  • Discord 메세지 알림
  1. aws lambda 함수를 생성한다.

    필자의 경우 같은 역할이 중복돼 생기는 것이 거슬려 람다에 대한 역할을 만들어 사용 중이다.

  2. 람다 함수 코드 작성.

import urllib3
import json

http = urllib3.PoolManager()

def lambda_handler(event, context):
    # 디스코드 웹훅 URL
    discord_webhook_url = "디스코드 웹훅 URL"

    # 보낼 메시지
    message = "[조치 필요]Booth App Server CPUUtilization 값이 100 % 에 도달하였습니다. 서버를 확인해 주세요"

    # 디스코드 웹훅에 메시지 전송
    payload = {"content": message}
    headers = {"Content-Type": "application/json"}
    response = http.request("Post", discord_webhook_url, body=json.dumps(payload).encode("utf-8"), headers=headers)

    # 성공 여부 확인
    print(
        {
            "message": "AWS CloudWatch 이벤트 발생!",
            "status_code": response.status,
            "response": response.data,
        }
    )
  1. 배포(Deploy) 후 Test버튼 클릭 4.다시 SNS 구독 생성

    엔드포인트는 3번에서 완료된 함수 ARN 을 입력하면 된다.

3.CloudWatch 경보 생성


경보 상태 + 버튼을 클릭한다.


경보 알림에 생성해 놓은 주제를 선택하여 경보를 생성한다.

4.Test

EC2 인스턴스에 접속하여 stress 패키지 설치한다. (해당 인스턴스 창은 2개 띄워 놓는다.)

sudo apt-get update
sudo apt-get install stress

하나의 인스턴스에서 stress를 적용하여 cpu사용률을 100으로 만든다.

stress --cpu 1 --timeout 600

나머지 하나의 인스턴스에서 cpu 사용률을 확인한다.

htop 

기다렸다가 알림이 오는 것을 확인한다.

필자의 경우 개발망 인스턴스로 테스트하여 메세지가 위와 다르다...

테스트가 끝나면 stress는 해제해준다.

profile
주섬주섬..

0개의 댓글