[Prometheus/Spring] 프로메테우스와 스프링 연결

프로메테우스와 스프링 연결하기

애플리케이션 설정

스프링의 마이크로미터가 프로메테우스가 사용하는 포멧에 맞추어 메트릭을 만들어 준다.

각각의 메트릭들은 내부에서 마이크로미터 표준 방식으로 측정되고 있기 때문에 우리는 어떤 구현체를 사용할지 지정만 해주면 된다.

 

  • build.gradle에 다음 내용 추가

마이크로미터 프로메테우스 구현 라이브러리를 추가하여 어떤 구현체를 사용할지 지정해준다.

이러면 스프링 부트와 액츄에이터가 자동으로 마이크로미터 프로메테우스 구현체를 등록해서 동작하도록 설정해준다.

implementation 'org.springframework.boot:spring-boot-starter-actuator' // 엑츄에이터
implementation 'io.micrometer:micrometer-registry-prometheus' // 프로메테우스

 

이제 엑츄에이터에 프로메테우스 메트릭 수집 엔드포인트( /actuator/prometheus )가 자동으로 추가된다. 

/actuator/prometheus 엔드포인트로 들어가보면 모든 메트릭이 프로메테우스 포멧으로 만들어져 있다.

 

엑츄에이터와 프로메테우스 포멧 차이
  • 프로메테우스는 . 대신에 _ 포멧을 사용한다. ( jvm.info → jvm_info )
  • 로그수 처럼 지속해서 숫자가 증가하는 메트릭을 카운터라 한다. 프로메테우스는 카운터 메트릭의 마지막에는 관례상 _total 을 붙인다. ( logback.events → logback_events_total )

 

프로메테우스 수집 설정

프로메테우스가 애플리케이션의 /actuator/prometheus 를 호출해서 메트릭을 주기적으로 수집하도록 설정해보자.

 

1. 다운로드 받은 프로메테우스 폴더에 있는 prometheus.yml 파일을 수정

 

2. 파일을 열어서 다음 코드를 추가

- job_name : 수집하는 이름. ( 임의의 이름을 사용하면 된다. )
- metrics_path : 수집할 경로를 지정.
- scrape_interval : 수집할 주기를 설정.
- targets : 수집할 서버의 IP, PORT를 지정

지금은 테스트용도로 매트릭을 빠르게 확인하기 위해서 수집주기를 1초로 설정했다.

하지만 수집 주기가 너무 짧으면 애플리케이션 성능에 영향을 줄 수 있으므로 운영에서는 10s ~ 1m 정도를 권장한다.

 

3. 설정이 끝났다면 파일을 저장하고 프로메테우스를 재시작하고 프로메테우스에 접속해 추가한 설정 정보가 반영되어 있는지 확인한다. ( 프로메테우스 메뉴 → status )

 

4. 확인했다면 우리가 연동한 애플리케이션의 메트릭 정보가 있는 것을 확인하자. (프로메테우스 메뉴 → status → targets) 

State 가 UP 으로 되어 있으면 정상, DOWN 으로 되어 있으면 연동 X

 


더 알아보기

[Grafana] 그라파나 설치 방법 (Window)

[Grafana] 그라파나 - 프로메테우스 연동 방법

[Prometheus] 프로메테우스란? 사용방법

[Grafana] 그라파나란? 대쉬보드 만들기 및 활용

 

참고자료 : 스프링 부트 - 핵심 원리와 활용