SPRING

[SPRING] 커스텀 메트릭 수집 및 시각화

도원좀비 2025. 5. 20. 20:28

1️⃣ 환경 구성

의존성 추가(Gradle)

dependencies {
    implementation 'io.micrometer:micrometer-registry-prometheus'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
}

 

application.yml 설정

management:
  endpoints:
    web:
      exposure:
        include: "prometheus"
  metrics:
    export:
      prometheus:
        enabled: true

2️⃣ 커스텀 메트릭 코드 작성

Counter, Timer, Gauge 등을 Micrometer에서 제공

 

회원가입 수 카운터 예시

@Component
@RequiredArgsConstructor
public class CustomMetrics {

    private final MeterRegistry meterRegistry;
    private final Counter signupCounter;

    public CustomMetrics(MeterRegistry meterRegistry) {
        this.meterRegistry = meterRegistry;
        this.signupCounter = Counter.builder("custom.user.signup.count")
            .description("전체 회원가입 수")
            .register(meterRegistry);
    }

    public void increaseSignupCount() {
        signupCounter.increment();
    }
}

 

서비스 로직에서 호출 :

customMetrics.increaseSignupCount();

3️⃣ Prometheus 설정 (prometheus.yml)

scrape_configs:
  - job_name: 'spring-actuator'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['host.docker.internal:8080']

4️⃣ Grafana 대시보드 예시

 

  • Dashboard > + New Panel
  • Query: custom_user_signup_count
  • 시계열 차트로 표현

5️⃣ 정리

구성요소 역할
Micrometer 메트릭 수집
Prometheus 메트릭 저장 및 스크래핑
Grafana 메트릭 시각화
Spring Boot Actuator 통해 노출