git hub CI/CD 적용 과정에서 ec2 인스턴스 CPUUtilization 값이 100까지 치솟으며 서버가 죽는 현상이 반복되었다. 아직 이 부분에 대한 원인 파악이 되지 않았으며 해당 현상이 깃 자동배포 시점으로 부터 하루정도 지나 발생한다는 점에서 경보 알림의 필요성을 깨닫게 되었다.
aws lambda 함수를 생성한다.
필자의 경우 같은 역할이 중복돼 생기는 것이 거슬려 람다에 대한 역할을 만들어 사용 중이다.
람다 함수 코드 작성.
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,
}
)
경보 상태 + 버튼을 클릭한다.
경보 알림에 생성해 놓은 주제를 선택하여 경보를 생성한다.
EC2 인스턴스에 접속하여 stress 패키지 설치한다. (해당 인스턴스 창은 2개 띄워 놓는다.)
sudo apt-get update
sudo apt-get install stress
하나의 인스턴스에서 stress를 적용하여 cpu사용률을 100으로 만든다.
stress --cpu 1 --timeout 600
나머지 하나의 인스턴스에서 cpu 사용률을 확인한다.
htop
기다렸다가 알림이 오는 것을 확인한다.
필자의 경우 개발망 인스턴스로 테스트하여 메세지가 위와 다르다...
테스트가 끝나면 stress는 해제해준다.