본문 바로가기
Study/WEB

Spring Boot + Kotlin의 모니터링 도구, Spring Actuator, Prometheus, Grafana (1/2)

by Becoming a Hacker 2022. 9. 18.
반응형

Spring Boot에서 Web Application이 정상적으로 동작하고 있는지 확인하기 위해 모니터링을 해야 하는 경우가 있습니다.

 

이번 포스팅에서는 Sprintg Boot에 설치할 모니터링 관련 라이브러리와 Open Source 기반의 도구에 대해 설명드릴 계획이고 다음 포스팅에서는 실제 구축까지 할 생각입니다.

 

Spring Actuator

Spring Boot의 서브 프로젝트로 Spring Boot Application이 제공하는 여러가지 정보를 쉽게 모니터링할 수 있도록 도와주는 라이브러리로써 HTTP나 JMX를 이용하여 모니터링 및 관리할 수 있는 기능을 제공합니다.

 

Prometheus

대상 시스템으로부터 각종 모니터링 지표를 수집하여 저장하고 검색할 수 있는 모니터링 및 알림 도구로 Open Source 기반입니다.

 

Prometheus는 Metrics(Key-Value)을 시계열 데이터(Timestamp)로 수집하고 저장합니다. 이는 레이블이라고 불리는 형식으로 Key-Value와 타임 스탬프가 함께 저장됩니다.

 

Prometheus 주요 특징

  • Metrics 이름과 Key Value로 식별될 수 있는 시계열 데이터가 있는 다차원 데이터 모델 사용
  • 유연한 쿼리 언어인 PromQL 지원
  • Prometheus에서 HTTP를 통하여 주기적으로 Expoter(모니터링 대상 시스템)로부터 Pulling 방식으로 Metrics를 수집
  • 많은 시스템을 모니터링할 수 있는 다양한 플러그인 지원
  • 주로 Kubernetes의 Main Monitoring System으로 사용됨

 

Prometheus 생태계

출처 : https://prometheus.io/docs/introduction/overview/

 

동작 과정

1. 설정된 작업(job)에 맞춰 Metrics를 모니터링 대상 시스템에 설치된 Exporter 또는 Push Gateway를 통해 수집합니다.

2. 수집한 모든 Metrics를 Local에 저장하고 지정된 Rule에 맞춰 시계열 데이터를 TSDB(Time Series DataBase)에 저장합니다.

3. 만약 수집한 Metrics가 Alert 생성 조건에 맞을 경우 Alert을 발생시킵니다.

4. 또한, Grafana와 같이 Prometheus에서 지원하는 API를 이용하여 수집된 데이터를 PromQL(Prometheus Query Language)을 이용하여 시각화할 수 있습니다.

 

Grafana

Metrics 시계열 데이터를 시각화하는 도구로써 Metrics Analysis Platform을 지향하고 있습니다. 또한, Grafana는 Open Source와 추가 기능이 포함된 Enterprise 버전(유료)이 존재합니다.

 

Grafana 주요 특징

  • 데이터 통합 
    • Grafana는 백엔드 저장소나 데이터베이스에 데이터를 수집할 필요가 없으며, 위치에 상관 없이 기존 데이터베이스(Kubernetes Cluster, rasberry pi, 다른 Cloud Services, Google Sheets)에서 데이터를 통합하여 단일 화면의 DashBoard로 제공합니다.
  • 모든 사용자가 볼 수 있는 데이터
    • Grafana는 소수의 관리자가 아닌 조직의 모든 사람이 데이터에 액세스를 할 수 있어야 한다는 원칙을 가지고 개발되었습니다. 그렇기 때문에 데이터를 필요로 하는 사람들이 데이터를 쉽게 사용하고 액세스할 수 있는 문화를 조성하고 데이터 역량을 강화할 수 있도록 지원합니다.
  • 쉽고 빠르게 동적 DashBoard 생성
    • Grafana DashBoard는 다양한 저장소에서 수집된 데이터를 통해 통찰력 있는 분석을 할 수 있을뿐만 아니라 누구나 동적 DashBoard를 생성하고 공유함으로써 협업 능력과 투명성을 높일 수 있습니다.
  • 유연성 및 다용도성
    • 수집한 데이터를 유연성 있게 다용도인 DashBoard로 변환하여 생성할 수 있으며, 이를 통해 사용하고자 하는 목적에 맞춰 커스텀마이징할 수 있습니다.

댓글