>  기사  >  Java  >  Spring Boot Actuator 메트릭 엔드포인트에 미터 데이터를 추가하는 방법

Spring Boot Actuator 메트릭 엔드포인트에 미터 데이터를 추가하는 방법

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 20:16:02294검색

How to add a meter data into Spring Boot Actuator metrics endpoint

단계

먼저 다음 종속성을 추가합니다

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- for Prometheus endpoint -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

그런 다음 웹 액세스를 통해 엔드포인트를 활성화합니다

src/main/resources/application.properties

management.endpoints.web.exposure.include=prometheus,metrics

싱글톤 구성요소 추가

@Component
public class MyMetrics implements MeterBinder {

    private final Random random = new Random();
    private final AtomicInteger counter = new AtomicInteger();

    @Override
    public void bindTo(MeterRegistry registry) {
        // can any value
        Gauge.builder("mymetrics.gauge", this, MyMetrics::getRandom)
                .description("MyMetrics gauge")
                .register(registry);

        // must the same or greater than the value last got, or reset to zero on restart
        FunctionCounter.builder("mymetrics.counter", this, MyMetrics::counterGetAndIncrement)
                .description("MyMetrics counter")
                .register(registry);
    }

    public double getRandom() {
        return random.nextDouble();
    }

    public int counterGetAndIncrement() {
        return counter.getAndIncrement();
    }

}

마지막으로 다음을 통해 측정항목 데이터에 액세스할 수 있습니다.

/actuator/metrics/mymetrics.counter

{"name":"mymetrics.counter","description":"MyMetrics counter","baseUnit":null,"measurements":[{"statistic":"COUNT","value":9.0}],"availableTags":[]}

/actuator/metrics/mymetrics.gauge

{"name":"mymetrics.gauge","description":"MyMetrics gauge","baseUnit":null,"measurements":[{"statistic":"VALUE","value":0.7618330619753056}],"availableTags":[]}

/액추에이터/프로메테우스

# HELP mymetrics_counter_total MyMetrics counter
# TYPE mymetrics_counter_total counter
mymetrics_counter_total 8.0
# HELP mymetrics_gauge MyMetrics gauge
# TYPE mymetrics_gauge gauge
mymetrics_gauge 0.1346348968727723

엔드포인트

엔드포인트는 org.springframework.boot.actuate.endpoint.annotation.Endpoint로 주석 처리되며 Bean이며 Spring의 BeanFactory에서 관리됩니다.

엔드포인트 수업 작성자 측정항목
Endpoint Class Created by
metrics org.springframework.boot.actuate.metrics.MetricsEndpoint org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration#metricsEndpoint
prometheus org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus.PrometheusMetricsExportAutoConfiguration.PrometheusScrapeEndpointConfiguration#prometheusEndpoint
org.springframework.boot.actuate.metrics.MetricsEndpoint

org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration#metricsEndpoint

프로메테우스 org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint

org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus.PrometheusMetricsExportAutoConfiguration.PrometheusScrapeEndpointConfiguration#prometheusEndpoint

org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping 클래스

org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration#webEndpointServletHandlerMapping

에 의해 생성됩니다. 엔드포인트 정보는

org.springframework.boot.actuate.endpoint.web.annotation.WebEndpointDiscoverer에서 제공됩니다. 경로와 엔드포인트 간의 매핑은 org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping#initHandlerMethods

에 등록됩니다.

org.springframework.web.servlet.HandlerMapping 인터페이스를 구현하므로 인스턴스 생성 중에 인스턴스가 DispatcherServlet
에 등록됩니다.

spring.jmx.enabled=true
JMX에 엔드포인트 노출

src/main/resources/application.properties

에 한 줄만 추가하면 됩니다. MBeanServer와 엔드포인트의 연결은 org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration을 통해 이루어집니다.

위 내용은 Spring Boot Actuator 메트릭 엔드포인트에 미터 데이터를 추가하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.