Spring

Grafana와 프로메테우스 연동하기

템잘알 2025. 5. 15. 11:42
728x90
 

Prometheus란?

  • 무엇?
    서버나 프로그램이 잘 돌아가는지 실시간으로 숫자 데이터를 수집해주는 시스템이에요.
  • 예시
    CPU가 얼마나 바쁜지, 메모리를 얼마나 쓰는지, 웹사이트가 몇 번 호출됐는지 숫자로 기록해요.
  • 특징
    • 매초마다 데이터를 모아서 저장해요.
    • 필요할 때 꺼내 볼 수 있어요.

Grafana란?

  • 무엇?
    Prometheus가 모은 숫자 데이터를 차트나 그래프로 예쁘게 보여주는 도구예요.
  • 예시
    CPU 사용량이 시간에 따라 오르는 모습을 그래프로 한눈에 볼 수 있어요.
  • 특징
    • 사용자들이 쉽게 볼 수 있게 대시보드를 만들 수 있어요.
    • 경고(알림)도 설정할 수 있어요. (예: CPU가 너무 바쁘면 알려줘!)

쉽게 말해둘이 같이 써야 진짜 힘을 발휘

  • Prometheus숫자 데이터 모으는 친구
    Grafana는 그 데이터를 예쁘게 보여주는 친구

Spring Boot 와 Grafana 연동하기

먼저 Granafa 설치필요!

Grafana를 설치하기 위한 자세한 정보는 아래 링크를 통해 확인할 수 있다.

  • 윈도우버전

The Grafana backend has a number of configuration options defined in its config file (usually located at… grafana.com

  • Red Hat, CentOS, RHEL, and Fedora(64 Bit) 계열의 리눅스 환경에서 설치버전
  • 먼저 공식 문서에서 제공하는 것 처럼 아래 명령어를 실행한다.

$ wget https://dl.grafana.com/oss/release/grafana-6.7.2-1.x86_64.rpm $ sudo yum install grafana-6.7.2-1.x86_64.rpm

  • 실행 후 http://localhost:3000 에 접속해보자. 다음과 같이 Grafana login 화면을 볼 수 있다. 기본 ID/PW인 admin/admin
  1. Granafa에서 프로메테우스 설정하기 
  2. Datasoure 에서 add data source 프로메테우스 추가하기 
  3. URL 부분에 프로메테우스 URL 설정 후 SAVE&TEST로 연결 확인! 
  4. 원하는 값 모니터링하기 (add panel 버튼 클릭후 커스텀하기!) 
  • request 요청수에 대한 커스터마이징 성공

 

 

 

 
 

 

Prometheus Architecture

Prometheus는 Pull 방식을 사용하여, 서버에 클라이언트가 떠 있으면 서버가 주기적으로 클라이언트에 접속해서 데이터를 가져오는 방식을 취한다.

 

Spring boot와의 연동방법

spring boot에서는 이미 promethues 연동을 위한 플러그인이 존재하므로, 라이브러리 의존성 추가만 해주면 끝난다!

  • pom.xml에 다음과 같이 설정한다.
	<!-- 프로메테우스 연동-->
		<dependency>
			<groupId>io.micrometer</groupId>
			<artifactId>micrometer-registry-prometheus</artifactId>
		</dependency>
   
 
  • application.yml에 다음과 같이 설정한다.
management:
  endpoints:
    metrics:
      enabled: true
    prometheus:
      enabled: true
 
  • 프로메테우스를 공식 홈페이지에서 다운로드후 실행하면 아래와 같다

  • 프로메테우스에서 target 설정은 prometheus.yml 에서 Spring boot 서버의 타겟을 설정한다. static_configs: - targets: ["localhost:8080"] metrics_path: '/actuator/prometheus'
  • 프로메테우스 실행 후 기본 port는 9090이다.

잘 연결되었는지 확인 하는 방법!

먼저 서버에 reqeust를 요청해보고 (/city/get/1) 프로메테우스에서 요청 시간에 대한 값을 수집함을 확인한다.

 

사용 소감

  • 생각보다 쉬움
    복잡할 줄 알았는데, Grafana에서 주소만 등록하면 끝이라서 금방 됐어요.
  • 바로 확인 가능
    Prometheus가 모은 데이터를 실시간 그래프로 시각화해주니
    관리자 입장에서 상태를 한눈에 확인할 수 있어서 좋았어요.
  • 알람 설정도 간편
    특정 수치를 넘으면 이메일이나 슬랙 알림도 바로 설정할 수 있었어요.

아쉬운 점

  • Prometheus 설정이 YAML이라 초보자에겐 낯설 수 있음
  • Grafana 사용법이 처음엔 살짝 복잡하게 느껴짐 

 

728x90