로그관리와 모니터링 - ELK 프로메테우스 그라파나편
monitoring-tools-prometheus-and-grafana
✅ 1. 모니터링이란 무엇일까?
- 기능과 가용성을 보장하기 위해 서버의 상태, 성능, 가동 시간 및 리소스 사용을 지속적으로 추적하는 것을 의미한다.
- 쉽게 말해 24시간 내내 서버에 청진기를 대고 심장 박동(Metric)을 듣고 있는 것 과 같다.
✅ 2. 모니터링의 필요성
모니터링 시스템 없이 서버를 운영하는 것은 마치 속도계도 없고, 기름(연료)이 얼마 남아있는지도 모르는 자동차를 타고 고속도로를 달리는 것과 같다.
당장은 차가 앞으로 잘 굴러가니까 문제가 없어 보이지만, 지금 엔진(CPU)이 터질 것처럼 과열되고 있는지,
기름(메모리)가 바닥나서 1분 뒤에 차가 멈춰버릴지 운전석에 앉은 우리는 전혀 알 길이 없다.
결국 도로 한가운데서 차가 퍼지고 나서야(서버다운) 사태를 파악하게 된다.
구체적으로 실무에서 모니터링이 필수인 3가지 이유는 다음과 같다.
- 사전예방 : ‘메모리 사용량이 평소보다 높은 80%를 넘었네?’가 확인이 되면 유저가 몰리기 전에 서버를 늘리는 등의 대처가 가능하다.
- 빠른 원인 파악 : 웨이팅 등록 절차가 갑자기 엄청 느려졌을때, 코드가 문제인지 DB가 문제인지 모니터링 대시보드를 통해 찾을 수 있다.
- 용량 계획 : 크리스마스이브 처럼 특별한 날 맛집 웨이팅이 평소의 10배가 몰릴 것 같다면, 기존에 알고있는 수치를 가지고 서버를 증축하는 계획을 세울 수 있다.
✅ 3. 모니터링 도구
- Spring Boot Actuators: 우리 서버의 건강 상태(메모리, CPU 등)를 수치로 뽑아내어 운영 환경에서 서비스할 때 필요한 여러 기능들을 제공
- Prometheus: Actuator가 노출하는 수치(메트릭)들을 주기적으로 긁어모아 데이터를 수집한다.
- Grafana: 수집된 데이터를 화려하고 시각적인 그래프로 보여주는 대시보드