우선 의존성을 추가해준다.
build.gradle
implementation 'org.springframework.boot:spring-boot-starter-actuator' // (1)
implementation 'io.micrometer:micrometer-core' // (2)
implementation 'io.micrometer:micrometer-registry-prometheus' // (3)
(1) : 스프링 부트 애플리케이터(Actuator)를 구성하는 라이브러리입니다. Actuator를 사용하면 애플리케이션의 상태, 구성, 로그, 메트릭 등을 노출할 수 있습니다.
(2) : Micrometer는 다양한 메트릭 시스템과 연동할 수 있는 벤더-중립적인 메트릭 수집 라이브러리입니다. 이 라이브러리는 애플리케이션에서 메트릭 데이터를 수집하고 노출하는 데 사용됩니다.
(3) : 이 라이브러리를 추가하면 애플리케이션에서 수집한 메트릭 데이터를 Prometheus 서버에 노출할 수 있습니다.
application.yml
management:
endpoint:
metrics:
enabled: true
prometheus:
enabled: true
endpoints:
web:
exposure:
include: health, info, metrics, prometheus
metrics:
tags:
application: monitoring
application.yml이 성공적으로 설정되었으면 아래와 같은 로그가 뜨게된다.
INFO 12928 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 4 endpoint(s) beneath base path '/actuator'
prometheus.yml에 추가해주자
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: '{name}'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['{서버 url}:{port}']
이렇게 설정해주고 prometheus를 실행해주면 spring boot에서 수집한 메트릭을 prometheus에서 수집해서 사용 할 수 있다.
잘 적용된 모습을 볼 수 있다.