프로메테우스란 무엇인가?
프로메테우스란?
구글의 쿠버네티스를 모니터링하기 위한 소프트웨어로 Borgmon이라는 것이 만들어졌는데 이를 비슷하게 오픈 소스로 공개한 것이 Prometheus입니다.
즉, Prometheus는 오픈소스 모니터링 시스템입니다.
Spring Boot Application의 여러 메트릭을 수집하여 모니터링할 수 있는 환경을 구축할 수 있습니다.
Spring Boot의 Actuator, Prometheus, Grafana 조합을 많이 사용하며 이를 통해 애플리케이션의 성능 및 상태에 대해 확인할 수 있습니다.
HTTP를 통한 pull model을 통해 주기적으로 수집하여 시계열 데이터로 저장합니다.
Spring Boot Actuator의 prometheus 앤드포인트를 사용하여 지표를 수집합니다.
메트릭이란?
메트릭은 다양한 유형의 요청 시간, 데이터베이스 Connection, CPU 사용량 들을 숫자 데이터로 표현한 것입니다.
사용자가 측정하고자 하는 값을 Time series 즉, 시간에 따른 변화를 기록하고 이를 통해 부하를 처리하는 방안에 대해 고민할 수 있습니다.
아키텍처
프로메테우스의 아키텍처로 6개의 구성요소로 나뉩니다.
- Prometheus server(본체)
- Service discovery
- Exporter라는 감시 에이전트
- 경고의 기능을 잡는 Alert
- 쿼리 언어인 PromQL
- 시각화 기능인 Visualization
여기서 핵심은 다음과 같습니다.
1. Prometheus는 일정주기별로 metircs을 pull해옵니다.
2. 해당 metrics를 Database에 저장합니다.
3. 저장된 데이터에 대해 규칙을 실행하여 기존 데이터에서 새로운 time series를 집계 및 기록하거나 alert를 생성합니다.
4. 수집된 데이터를 시각화하기 위해 Grafana 또는 다른 API 소비자를 사용할 수 있습니다.
Prometheus를 사용하기에 적합하지 않은 일
프로메테우스는 장애 상황에서도 시스템에 대한 통계를 항상 확인할 수 있어야 하니다.
요청당 청구와 같이 100% 정확성이 요구되는 일에는 좋은 선택이 아닙니다.
참고자료
https://prometheus.io/docs/introduction/overview/
https://brunch.co.kr/@springboot/734
https://hudi.blog/spring-boot-actuator-prometheus-grafana-set-up/
https://meetup.nhncloud.com/posts/237
https://www.devkuma.com/docs/prometheus/overview/