MSA 환경을 구성하게 되면, 각각의 서비스들의 상태들을 모니터링하는 것이 기존 형식보다는 까다로워진다.
모놀리식인 경우에는 하나의 application으로 구성되어 있어 해당 application의 상태 정보만 잘 모니터링하면 되었지만
각각의 모듈이 나누어진 MSA 환경에서는 모니터링할 target들이 더 많아진다.
MSA 환경에서의 모니터링은 Prometheus, Grafana를 통해 이루어질 수 있다.
prometheus 메트릭(metric)이라는 데이터 모델을 기반으로 하는 monitoring, alert 툴
Grafana : 메트릭 정보를 시각화해 주는 툴
위의 그림을 기준으로 보면
- prometheus를 통해 spring-boot-application의 모니터링 데이터를 수집
- grafana에서 prometheus가 수집한 데이터를 dashboard를 통해 시각화
- spring-boot-actuator가 모니터링 데이터를 제공
다음으로 간단하게 각 툴의 특징을 알아보자
prometheus
Soundcloud사에서 개발한 오픈소스 모니터링 툴
- Pull-Based Monitoring
- target이 모니터링 툴에게 데이터를 보내는 형식(push)이 아닌
모니터링 툴에서 target의 데이터를 수집하는 형식(pull)
- 시계열데이터베이스(TSDB)
- 메트릭 이름 및 key-value 쌍으로 식별되는 시계열데이터가 있는 다차원 데이터 모델을 사용
- Time-Stamped DataBase라고도 불리는 Time Seriese DataBase
- 많은 양의 정보를 빠르게 검색가능
- 시간에 따라 저장된 데이터를 의미
- 시간 경과에 따른 변화를 추적하는데 용이
- PromQL
- 다차원 데이터 모델에서 사용하는 쿼리언어
- 시계열 데이터를 실시간으로 조회하고 집계
Grafana
- 다양한 데이터 소스 지원
- Prometheus, InfluxDB, Elasticsearch, MySQL, PostgreSQL 등 다양한 데이터 소스를 지원
- 다양한 시각화 옵션
- 그래프, 히트맵, 표, 텍스트 패널, 싱글 스탯, 게이지 패널 등 다양한 시각화 옵션 제공
- 데이터의 특성에 맞게 가장 적합한 방법으로 데이터 시각화 가능
- 알림 기능
- 데이터의 변화에 따라 알림을 보내는 기능을 제공
- 데이터의 이상 변동이나 임계치 초과 등을 실시간으로 감지 및 대응 가능
- 대시보드 템플릿
- 대시보드를 쉽게 생성할 수 있도록 다양한 템플릿을 제공
- 사용자는 자신만의 대시보드를 생성하고, 이를 다른 사용자와 공유 가능