[AWS로 시작하는 인프라 구축의 정석] Ch14. 서비스 모니터링하기

Cherry·2023년 8월 15일
0
post-thumbnail

본 포스트는 AWS로 시작하는 인프라 구축의 정석 책을 활용한 스터디 기록입니다.

🔭 모니터링이란?

하나의 서비스는 여러 요소로 구성되어 있기 때문에 서비스를 구성하는 각 요소 모두가 정상적으로 동작해야 서비스가 온전히 작동될 수 있습니다! 만약 장애가 발생하여 서비스가 제대로 동작하지 않는데 이 장애가 어떤 요소에서 발생한 것인지 모른다면 복구 시간이 굉장히 길어지겠죠?!

그렇기 때문에 우리는 신속하게 서비스를 복구하기 위해 평소에도 서비스의 상태가 어떤지 파악해두어야 합니다. 이것을 모니터링(monitoring) 이라고 합니다.

효율적으로 모니터링을 하기 위해서는
(1) 집중 관리
(2) 알림
(3) 지속적인 정보 수집

에 대해 고려해야 합니다.

📌 모니터링 고려 사항

집중 관리

하나의 서비스는 여러 요소로 구성되어 있기 때문에 서비스를 구성하는 각 요소 모두가 정상적으로 동작해야 서비스가 온전히 작동될 수 있습니다! 그러나 이 정보들이 각각의 요소마다 산재되어 있으면 문제가 발생했을 경우 장애 지점을 찾기 어렵겠죠 😭

따라서 서비스를 구성하는 모든 요소들에 대한 정보를 한 곳에 모아 집중 관리할 수 있어야 합니다!

알림

대시보드를 통해 사람이 쉽게 화면으로 서비스 상태를 파악할 수 있지만 365일 쉬지 않고 대시보드 화면을 보며 장애가 나는지 확인할 수는 없습니다!
서버에 장애가 나거나 갑자기 이용자가 급격하게 증가하여 반응이 지연되는 등 대응이 필요한 상황에 대해서는 그 상황을 감지할 수 있는 시스템이 필요합니다. 이를 위해 우리는 경보(alarm) 를 사용합니다!

경보는 보통 서비스의 운영자가 최대한 빠르게 변화를 알아채기 위해 이용하며 푸시 알림 등을 사용할 수 있습니다!

지속적인 정보 수집

서비스에 어떤 문제가 발생했을 때, 그 당시 뿐 아니라 이전에도 자주 같은 문제가 발생했을 가능성이 있습니다. 이를 위해 모니터링 시스템에서는 수개월 또는 수년 단위로 지속적인 정보를 수집해 저장해두었다가 언제나 참조가 가능하도록 해야 합니다.

🌟 주요 모니터링 항목

생사 모니터링

생사 모니터링은 해당 리소스가 작동하는지에 대해 모니터링합니다.

CPU 사용률

CPU 사용률에서는 리소스에서 과도한 작업을 수행하는가를 모니터링합니다.

메모리 사용률

메모리 사용률에서는 리소스에 제공되는 메모리가 많이 쓰이지 않는가를 확인합니다.

디스크 용량

디스크 용량에서는 리소스에 연결된 디스크의 빈 용량이 충분한지를 확인합니다.

네트워크 트래픽

네트워크 트래픽에서는 네트워크를 경유해 리소스에 접근하거나, 리소스에서 나오는 통신량을 확인합니다.

🌬 AWS 리소스별 모니터링 항목

EC2

EC2는 설치된 OS 자체의 관리를 수행하므로 OS나 미들웨어가 문제의 원인이 되어 서버가 다운될 가능성이 있으며, CPU나 메모리/디스크 등에도 제한이 있기 때문에 네트워크 트래픽을 제외하고는 모두 모니터링하는 것이 좋습니다.

RDS

RDS는 EC2와 거의 같으며, 추가로 실행된 SQL의 latency처리량(일정 시간당 처리량) 등을 추가합니다.

ALB

ALB는 관리형 서비스이기 때문에 기본적으로 작동 불능이 되는 경우는 거의 없습니다. 그러나 통신량이 비용에 직접적으로 반영되므로 과도한 통신이 발생하지 않는지 네트워크 트래픽을 모니터링하는 것이 좋습니다.

S3

S3 또한 관리형 서비스이기 때문에 기본적으로 작동 불능이 되는 경우는 거의 없으나 디스크 사용량이나 통신량에 의해 비용이 발생하므로 디스크 용량과 네트워크 트래픽은 모니터링하는 것이 좋습니다.

⏰ CloudWatch

AWS에서는 AWS 내부 리소스를 모니터링할 수 있도록 CloudWatch 라는 모니터링 시스템을 제공합니다.
CloudWatch를 사용하면 앞서 이야기한 지속적 정보 수집, 집중 관리, 경보(액션을 사용함) 에 대해 처리할 수 있습니다.

기본적인 기능은 무료로 이용할 수 있으며, 관리형 서비스로 작동하기 때문에 CloudWatch 자체를 모니터링할 필요 또한 없습니다.

주요 기능

(1) 수집 : 지속적으로 리소스와 관계된 로그를 실시간으로 수집하고 기록합니다.
(2) 모니터링 : 집중 관리하여 수집한 정보를 보기 쉽게 그래프로 표현한거나, 그래프를 모아 한 장소에서 열람할 수 있습니다.
(3) 액션 : 주로 경보 기능을 제공하며 SNS, 메일, API 호출 등 다양한 형태로 이용자가 즉시 확인하기 쉽도록 제공할 수 있습니다.

참고
https://blog.imqa.io/content/images/2021/06/210623_Dashborad_Blog-4.png

profile
호기심 많은 백엔드 개발자입니다 😝

1개의 댓글

comment-user-thumbnail
2023년 8월 15일

많은 도움이 되었습니다, 감사합니다.

답글 달기