일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- redis
- laravel
- Spring Batch
- linux
- Design Patterns
- ubuntu
- JVM
- ReactJS
- Spring
- Web Server
- javascript
- Spring Boot
- Oracle
- MySQL
- db
- devops
- AWS
- php
- tool
- IntelliJ
- java
- it
- Git
- jenkins
- Gradle
- 맛집
- springboot
- jsp
- elasticsearch
- 요리
Archives
- Today
- Total
아무거나
[Spring Actuator] Example 5편 - Gauge 본문
반응형
이전글: https://bkjeon1614.tistory.com/784
- Gauge
- Counter 타입인 경우 increment 메서드만 제공되지 decrement 메서드가 존재하지 않는다. 그러므로 커졌다 작아졌다 하는 값으로는 Gauge 를 사용하면 된다.
- 또한 Counter 는 counter 값을 조회시도 하는지 여부와 무관하게 값이 증가될 때마다 내부값 갱신을 해줘야한다. 그러나 Gauge 는 조회시도 할 때만 해당 값을 계산하면 된다.
- 샘플코드
- 기본등록 [QueueManager.java]
[GaugeConfig.java]package com.example.bkjeon.base.services.api.v1.actuator.service.gauge; import org.springframework.stereotype.Service; @Service public class QueueManager { public long getQueueSize() { return System.currentTimeMillis(); } }
package com.example.bkjeon.base.actuator.gauge; import com.example.bkjeon.base.services.api.v1.actuator.service.gauge.QueueManager; import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.MeterRegistry; import javax.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Configuration; @Configuration @RequiredArgsConstructor public class GaugeConfig { private final QueueManager queueManager; private final MeterRegistry meterRegistry; @PostConstruct public void register() { Gauge.builder("my.queue.size", queueManager, QueueManager::getQueueSize) .register(meterRegistry); } }
- MeterBinder 를 통한 등록 (상기 내용에 이미 GaugeConfig 에 선언한 내용이 있으므로 @Configuration 을 주석처리 후 진행)
[GaugeConfigWithMeterBinder.java]
[QueueManager.java]package com.example.bkjeon.base.actuator.gauge; import com.example.bkjeon.base.services.api.v1.actuator.service.gauge.QueueManager; import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.binder.MeterBinder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class GaugeConfigWithMeterBinder { private static final String METRIC_NAME = "my.queue.size"; @Bean public MeterBinder gaugeMeterBinder(QueueManager queueManager) { return registry -> Gauge.builder(METRIC_NAME, queueManager, QueueManager::increment) .register(registry); } }
package com.example.bkjeon.base.services.api.v1.actuator.service.gauge; import java.util.concurrent.atomic.AtomicLong; import org.springframework.stereotype.Service; @Service public class QueueManager { private final AtomicLong count = new AtomicLong(0); public long getQueueSize() { return System.currentTimeMillis(); } public long increment() { return count.incrementAndGet(); } public long decrement() { return count.decrementAndGet(); } }
- 기본등록 [QueueManager.java]
참고
- https://semtul79.tistory.com/
- https://docs.spring.io/
- https://www.inflearn.com/course/spring-boot-actuator-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0/dashboard
반응형
'Java & Kotlin > Spring' 카테고리의 다른 글
[Spring Actuator] Aspect 를 활용한 특정 metric 의 tag 의 여러 value 값 별로 시간단위로 실시간 카운트 저장 (0) | 2023.12.04 |
---|---|
[Spring Actuator] Example 6편 - Timer (1) | 2023.11.30 |
[Spring Actuator] Example 4편 - Metrics Tags (0) | 2023.11.27 |
[Spring Actuator] Example 3편 - Counter (0) | 2023.11.26 |
[Spring Actuator] Example 1편 - Custom Endpoint 생성 (2) | 2023.11.26 |
Comments