Cloud Watch, CWAgent로 Server Error log을 추적하여 Error 발생 시 Slack으로 경보 받기

luckygamza·2022년 3월 15일

500 Error가 터졌을 때 즉시 알림을 받고 싶다.


우리 청원 사이트를 배포한다음에 순조롭게 잘 되나 싶더니,
알고보니 청원에 동의가 되지 않고 500 Error가 터지고 있었다..
@PostMapping("/petitions/{petitionId}/agreements")
이유는 프론트 측에서 동의를 하는데에 쓰이는 위와같은 형식의 동의 API에 petitionId를 실수로 빠뜨려서
/petitions//agreements 로 POST 요청을 보내고 있었는데,이것이 잘못된 url로 인식이 되지 않고 500에러로 처리되었다.
이러한 문제 상황이 발생했을 때 바로 대응을 하기 위해서는 500에러가 터질때마다 즉시 알림을 받을 수 있어야 했다.
우리 팀의 백엔드 마스터 킹갓 태완이형과 같이 cloudwatch를 붙이는 작업을 진행했다.

Cloud Watch, CWAgent 붙이고 Slack으로 알림받기



AWS Cloud Watch는 EC2의 CPU사용량 등 기본적인 지표들은 추적할 수 있도록 제공하지만,
EC2의 디스크 사용량, EC2에 띄운 서버의 로그 등의 수집 기능은 따로 제공하지 않아
EC2안에 따로 CWAgent를 설치해야 한다.
서버의 에러를 추적하기 위해 우리는
1. CWAgent를 서버가 돌아가고 있는 EC2에 설치한다.
2. CWAgent가 서버가 로깅하고 있는 Error.log 파일에 접근하여 Error log를 주기적으로 수집하도록 한다.
3. CWAgent가 수집하는 Log 그룹을 AWS Cloud Watch로 추적하도록 설정한다.
4. Log 그룹을 Cloud Watch로 추적해서 만약 새로운 Error가 수집되었을 때 AWS SNS에 메시지를 보내고, 해당 SNS에 새로운 알림이 오면 SNS와 연결된 aws lambda함수가 트리거되어 slack으로 알림이 가도록 구성한다.
와 같은 과정을 수행하도록 하였다.

Cloud Watch 대시보드


우리 팀의 PROD 환경의 Cloud watch 대시보드 이다 ㅎㅎㅎ
현재 추적하고 있는 지표들은 다음과 같다.

CPU 사용량
메모리 사용량
Error Log
RDS CPU 사용량
RDS ReadWrite Latency
RDS ReadWrite Throughput
RDS Network Throughput

0개의 댓글