hayu's 개발 일지

[TIL]240419 Prometheus & Grafana 본문

스터디/spring

[TIL]240419 Prometheus & Grafana

hayu00 2024. 4. 19. 21:05

Prometheus & Grafana

  • 애플리케이션 모니터링이란 애플리케이션에서 발생하는 동작들에 대한 메트릭을 수집하여 성능을 분석하는 분야를 말한다.
  • 모니터링을 통해 서비스 개발 과정에서는 동작을 확인할 수 있고, 서비스 오픈 직전에는 성능 테스트를 할 수 있으며 서비스 운영 과정에서는 문제를 해결할 수 있다.

 

Metric(메트릭)

  • 메트릭이란 측정 가능한 양이나 특성을 나타내는 척도 또는 지표를 말한다. 데이터 분석이나 평가, 성능 측정 등 다양한 분야에서 사용된다.
  • 메트릭을 잘 수집하면 시스템의 현재 상태를 손쉽게 파악할 수 있다.

 

Prometheus 프로메테우스

  • 프로메테우스는 오픈 소스 모니터링 도구로 메트릭 데이터를 수집하여 데이터베이스에 저장하고, 이를 사용하여 애플리케이션의 상태를 모니터링하고 분석한다.
  • 애플리케이션에서는 매트릭 데이터를 프로메테우스로 노출 시켜줘야 하는데, 스프링 부트에서 프로메테우스를 사용하기 위해서는 스프링 부트 액추에이터 (Spring Boot Actuator) 를 사용하여 메트릭 수집을 위한 앤드 포인트를 노출시킨다.

 

장/단점

장점

pull 구조

  • pull 방식의 구조를 채택함으로써, 모든 메트릭의 정보를 중앙 서버로 보내지 않아도 된다. 각 대상 서버의 부담이 줄어들고 데이터 수집 프로세스에 대한 제어가 강화된다.
    • 대부분의 모니터링 구조는 push 인데, 각 타겟 서버에서 부하가 걸릴 경우 push 방식은 fail point가 될 가능성이 있다.(pull 방법은 push 방법에서 발생할 수 있는 대상 서버 과부하 위험 줄여줌)

Kubernetes 통합

  • Kubernetes 환경에서 설치가 간단하고, grafana와의 연동을 통한 운영이 쉽다.
    • Prometheus는 기본 통합 및 동적 서비스 검색 지원으로 인해 Kubernetes와 같은 컨테이너화된 환경을 모니터링하는 데 적합하다.

다양한 metric exporter 제공

  • Linux, Window등의 OS metric 뿐 아니라 각종 Third-party의 exporter를 제공한다. 애플리케이션, 데이터베이스, 시스템과 같은 다양한 소스에서 메트릭을 쉽게 수집할 수 있다.
  •  

단점

  • 각 리전(Region)에 프로메테우스를 배치한 후, 이를 Master에 Aggregate(더하는)하는 방식이 프로메테우스가 공식적으로 권장하는 다중화 방식이다. 즉, Clustering(그룹 방식 / 군집화)과는 거리가 멀다. → 고가용성 Prometheus 배포를 설정하려면 수동 구성과 외부 도구가 필요한 경우가 많다.
  • 싱글 호스트 아키텍처이기 때문에 저장용량이 부족하면 스토리지 확장을 위해 디스크 용량을 늘리는 것 밖에 방법이 없다

 

Grafana 그라파나

  • 그라파나는 오픈 소스 시각화 및 대시보드 도구로 다양한 데이터 소스와 통합되어 다양한 유형의 데이터를 시각화하고 사용자가 쉽게 대시보드를 구성할 수 있는 기능을 제공한다.
  • 가장 일반적으로 사용되는 데이터 소스가 프로메테우스이다. 그 외에도 InfluxDB, ElasticSearch, MySQL, PostgreSQL, AWS CloudWatch 등 다양한 데이터 소스와 통합할 수 있다.
  • 이러한 데이터 소스로부터 그라파나는 데이터를 쿼리하고, 그래프, 차트, 테이블 등 다양한 시각화 요소를 사용하여 데이터를 시각적으로 표현한다.

 

Prometheus 프로메테우스 설치

프로메테우스 설치

https://prometheus.io/download/

환경에 맞는 파일을 클릭하여 설치한다.

다운 받은 파일의 압축을 풀고 해당 폴더에 들어가 prometheus.exe를 실행한다.

이 화면이 나오면 추가정보를 클릭하고 실행한다.

 

실행이 되면 cmd 창이 뜬다.

cmd 창이 뜬 상태에서 프로메테우스로 잘 접속이 되는지 확인한다.

http://localhost:9090 ( 프로메테우스의 기본포트는 9090)

정상적으로 작동하는 것을 확인할 수 있다.

 

 

참고 자료

- https://developer-nyong.tistory.com/49

- https://benlee73.tistory.com/60

- https://blog.pages.kr/2778