개요
이 글에서는 AWS cloudwatch를 사용하여 alarm(경보)을 설정하고 테스트하는 과정을 설명합니다. alarm은 시스템의 이상 징후를 빠르게 감지하는 도움을 줍니다. 서비스 운영에 있어서 alarm은 필수항목입니다.
alarm 이란
어느 기준을 넘으면 alarm이 발생했다라고하며 기준보다 낮아지면 alarm이 해소되었다라고 합니다. alarm이 발생하면 나쁜 조건이 발생한 것입니다. 예를 들어서 disk full 등이 있습니다.
alarm 기준 설정
막상 alarm을 설정하려면 어떤 것을 기준으로 alarm을 설정할지 고민이 됩니다. 기준을 아직 모를 때는 이전 블로그에 언급한것 처럼 RED method와 USE method로 시작하면 좋습니다.
- RED method와 USE method: https://malwareanalysis.tistory.com/839
아래 시나리오는 USE method와 RED method를 각각 한개씩을 선정했습니다. 데이터베이스 CPU사용률과 API 에러율은 실무에서 많이 사용하는 alarm조건입니다.
- 데이터베이스 CPU 사용률: CPU 사용률이 60% 이상일 경우
- API 에러율: Target 에러율이 10% 이상일 경우 (5xx 에러 기준)
alarm 전송
alarm이 발생하면 해당 alarm을 사용자가 받을 수 있어야 합니다. 이메일, 전화, 문자, 메신저 등이 있습니다.
alarm 연습
시나리오
AWS환경에서 데이터베이스 CPU 사용률과 API에러률를 시나리오로 설정했습니다. 데이터베이스는 RDS로 대체하였고, API 에러률은 ALB target 5xx에러률로 대체했습니다.
- RDS CPU 사용률: CPU 사용률이 60% 이상일 경우
- ALB Target 에러율: Target 에러율이 10% 이상일 경우 (5xx 에러 기준)
아키텍처
시나리오를 테스트하기 위한 아키텍처는 아래그림과 같습니다.
- 데이터베이스 역할: AWS RDS
- API 역할: nginx pod와 ALB
- cloudwatch alarm
- alarm이 발생/해소되면 slack메신저로 alarm 수신
테라폼 코드
아키텍처의 리소스는 테라폼으로 배포했습니다. 실습과정이 궁금하신분은 저의 github을 참고해주세요.
cloudwatch alarm 아키텍처
cloudwatch alarm이 발생하거나 해소되면 AWS console에서 직접 확인해야 합니다. AWS console에서 확인하면 alarm을 놓칠 수 있으므로 메신저 slack을 통해 alarm 발생/해소를 받게 했습니다.
cloudwatch alarm이 발생/해소되면 SNS에 alarm 메세지를 전달합니다. lambda는 SNS를 구독하여 메세지가 발생하면 slack에 그대로 전송합니다.
RDS CPU 사용률 60% 시나리오
RDS의 cpu 사용률 상승을 시키는 방법은, 슬로우 쿼리를 짧은 시간안에 많이 호출하여 상황을 만들었습니다. sysbench를 사용하여 더미 데이터 천만개를 생성했고, sysbench로 select sql를 짧은 시간안에 많이 호출하도록 했습니다.
- sysbench 글: https://malwareanalysis.tistory.com/832
cloudwatch alarm을 등록한 과정입니다.
유투브 영상 8:40초부터 실습과정이 있습니다.
API 에러률 10%이상
ALB 시나리오는 nginx pod를 호출하면 5xx에러가 강제로 발생하게 만들었습니다.
nginx에서 5xx에러가 발생하면 ALB Target 5xx에러가 발생합니다. 이 메트릭은 cloudwatch alarm에 사용됩니다.
nginx pod에서 강제로 5xx에러를 발생시키기 위해서, 헬스체크 API빼고는 모든 요청을 503에러를 뱉게 했습니다.
cloudwatch alarm에서는 ALB error rate가 없어 저희가 수식을 만들어야 합니다. 수식은 target 5xx error count / request 입니다.
ALB error rate에 대한 cloudwatch alarm을 만드는 과정과 alarm 테스트는 유투브 영상 15:36분에 볼수 있습니다.
마치며
alarm은 서두에서 말한 것처럼 운영할 때 꼭 필요한 요소입니다. 실무에서는 따로 alarm시스템을 구축해서 사용하는 편입니다. 혼자 연습할 때 alarm시스템을 만드기 힘드니 cloudwatch alarm기능을 사용하면 매우 쉽게 테스트할 수 있습니다.
'전공영역 공부 기록' 카테고리의 다른 글
nvidia GPU operator는 Amazon Linux에 GPU driver설치를 지원하지 않는다. (1) | 2025.06.15 |
---|---|
EKS에서 AIOps를 하기 위한 로드맵 (2) | 2025.06.15 |
kubernetes 1.33 알파기능 - kuberc (0) | 2025.06.03 |
AWS 최신 자료를 볼때 영어문서를 봐야 하는 이유 (1) | 2025.06.01 |
쿠버네티스 cgroup과 request.cpu, limit.cpu 관계를 잘 설명한 글 (2) | 2025.05.31 |