Prometheus
위 그림은 프로메테우스 공식 홈페이지에서 프로메테우스의 동작 흐름을 나타낸 그림이다.
프로메테우스는 메트릭을 수집하여 저장 및 연산하고 간단한 시각화를 지원하는 오픈소스 라이브러리이다.
이전 글에서 본 것 처럼 스프링부트 액추에이터에서 애플리케이션 정보와 메트릭 정보를 제공한다.
프로메테우스는 액추에이터에서 제공하는 정보를 이용하여 저장 및 간단히 시각화해서 볼 수 있다.
이 글에서는 로컬에서 스프링부트 액추에이터 및 프로메테우스를 이용하여 메트릭을 활용하는 법을 정리해두려 한다.
액추에이터에서 제공하는 정보를 이용하려면 모니터링 툴에 맞는 데이터 양식으로 변환해야한다.
아래 그림은 어떻게 액추에이터의 데이터가 모니터링 툴에 맞는 양식으로 변환되는지 표현한다.
간단히 표현하자면 마이크로미터라는 라이브러리에서 표준 측정 방식을 정해두고
마이크로미터 구현체가 각각의 모니터링 툴에 맞는 양식으로 변환해주는 형식이다.
사용 기술
- Spring Boot 3.2.4 / gradle-kotlin
- Java 17
- Spring Boot Actuator, Prometheus
써보기
로컬에서 프로메테우스를 설치하고 사용해볼 것이다.
순서는 아래와 같다.
- 스프링부트 액추에이터 및 프로메테우스 의존성 추가
- 로컬에 프로메테우스 설치
- 프로메테우스 설정
- 로컬에서 프로메테우스 접속
- 프로메테우스 써보기
1. 의존성 추가
우선 아래처럼 스프링부트 액추에이터와 프로메테우스의 의존성을 추가해준다.
// build.gradle.kts
// 모니터링
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation ("io.micrometer:micrometer-registry-prometheus")
의존성을 추가해주면 "/actuator/prometheus" 경로로 들어가면 아래와 같은 JSON 결과 값을 확인할 수 있다.
잘 보면 "/actuator/metrics" 에서 본 데이터들이 형식만 다르게 나와있는걸 알 수 있다.
위에서 그림으로 언급한 마이크로미터 구현체가 프로메테우스에 맞는 데이터 형식으로 변환한것이다.
2. 로컬에 프로메테우스 설치
본인 환경은 윈도우이므로 윈도우 기준으로 설명하겠다.
로컬에서는 맥에서도 실행 방법만 exe 파일 실행이 아닐 뿐 다르진 않을 것이다.
프로메테우스 공식 홈페이지에서 최신 버전을 다운 받는다.
굳이 최신일 필요는 없지만 공부용이니까 본인은 최신 버전으로 다운 받았다.
3. 프로메테우스 설정
3-1. prometheus.yml 설정
아래 두가지 파일만 생각하면 된다.
우선 우리 애플리케이션에서 메트릭 정보를 받아올 수 있도록 prometheus.yml 파일을 설정해야한다.
vsCode 혹은 IntelliJ 같은로 띄워서 설정해주자.
아래 yml 파일에서 추가라는 주석이 달린 아래 부분을 넣어주면 된다.
targets 에는 설정한 액추에이터가 띄워진 서버 URL을 입력해주면 된다.
기본은 8080포트일테지만 이전 글에서 언급했던 것 처럼 원하는 포트번호로 수정할 수도 있다.
scrape_interval 로 메트릭 정보 수집 주기를 정할 수 있다.
본인은 15초로 설정하였다.
// prometheus.yml
... 생략
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
#추가
- job_name: "spring-actuator"
metrics_path: '/actuator/prometheus'
scrape_interval: 15s // 15초에 한번씩 actuator 정보 수집
static_configs:
- targets: [ 'localhost:8080' ] // 메트릭을 수집할 서버 도메인
... 생략
3-2. prometheus.exe 실행
프로메테우스를 실행하면 아래처럼 서버 실행 창이 뜬다.
4. 프로메테우스 접속
프로메테우스의 기본 포트인 9090으로 접속한다.
localhost:9090으로 접속하면 아래와 같은 창을 확인할 수 있다.
5. 프로메테우스 쿼리 써보기
5-1. 프로메테우스 쿼리 사용
아래처럼 promQL 이라는 프로메테우스 전용 쿼리를 사용할 수 있다.
본인은 간단한 Count 쿼리 조회만 해봤지만 promQL을 이용한 다양한 연산이 가능하니 프로메테우스 공식 홈페이지를 참고해보자.
3-1에서 설정한 scrape_interval 대로 15초당 한번씩 "/actuator/prometheus" 경로로 요청을 한다.
5-2. 프로메테우스 쿼리 그래프 확인
아래처럼 쿼리 결과를 간단한 그래프로 시각화하여 볼 수도 있다.
'백엔드 > 연습' 카테고리의 다른 글
Grafana로 애플리케이션 상태 확인해보기 (0) | 2024.06.08 |
---|---|
Grafana를 이용하여 메트릭 시각화 (0) | 2024.06.07 |
Spring Boot Actuator 써보기 (0) | 2024.06.05 |
EasyRandom 라이브러리 사용해보기 (0) | 2024.05.23 |
QueryDSL 적용하기: gradle-kotlin (0) | 2024.05.13 |