측정 단위
Counter
: 런타임에서 생성된 과정 수를 측정.Gauge
: 영구적으로 생성된 과정 수를 측정.Timer
: 과정 생성에 소요된 시간을 측정DistributionSummary
: 과정 평점에 대한 분포 요약
사용방법
사용할 측정 단위의 이름과 설명 그리고 메트릭 저장소를 통해 생성단위를 빈으로 등록한다.
생성된 측정 단위는 측정할 로직에서 사용하여 과정을 측정한다.
- 등록 예제
@Bean
public Counter createCourseCounter(MeterRegistry registry) {
return Counter.builder("api.courses.created.count")
.description("Total number of courses created")
.register(registry);
}
@Bean
public Gauge createCourseGauge(MeterRegistry registry){
return Gauge.builder("api.courses.created.gauge", () -> {
return 10; // gauge를 얻을 저장소에서 가져오는데 예제라서 10 고정
}).description("Total courses created")
.register(registry);
}
@Bean
public Timer createCoursesTimer(MeterRegistry registry){
return Timer.builder("api.courses.creation.time")
.description("Course creation time")
.register(registry);
}
@Bean
public DistributionSummary createDistributionSummary(MeterRegistry registry){
return DistributionSummary.builder("api.courses.rating.distribution.summary")
.description("Rating distribution summary")
.register(registry);
}
Prometheus와 Grafana에 연동하기
micrometer에서 제공하는 prometheus 라이브러리 의존성 추가하면 애플리케이션의 메트릭 정보를 연동할 수 있다.
runtimeOnly 'io.micrometer:micrometer-registry-prometheus'
- 로컬에서 도커를 이용해서 실습하기 위한 프로메테우스 설정 파일
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: [ "host.docker.internal:9090" ]
- job_name: "spring-actuator"
metrics_path: /actuator/prometheus
scrape_interval: 5s
static_configs:
- targets: [ "host.docker.internal:8081" ]
- 도커 컴포즈 파일
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- "./prometheus.yml:/etc/prometheus/prometheus.yml"
grafana:
image: grafana/grafana
ports:
- "3000:3000"
- 연동된 grafana 화면 예시
- spring boot actuator 에서 보낸 metric 파일 예시
'spring > boot' 카테고리의 다른 글
스프링 부트 자동 구성과 실패분석기 (0) | 2023.10.21 |
---|---|
2장 스프링 부트 공통 작업 - 실전 스프링 부트 (1) | 2023.10.16 |
1장 스프링 부트 시작하기 - 실전 스프링 부트 (2) | 2023.10.15 |