Maison  >  Article  >  Java  >  Comment ajouter des données de compteur dans le point de terminaison des métriques Spring Boot Actuator

Comment ajouter des données de compteur dans le point de terminaison des métriques Spring Boot Actuator

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 20:16:02286parcourir

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

Étape

Tout d'abord, ajouter la dépendance suivante

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>

Ensuite, pour activer les points de terminaison via l'accès Web

src/main/resources/application.properties

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

Ajouter un composant singleton

@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();
    }

}

Enfin, les données métriques sont accessibles via

/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":[]}

/actuateur/prométhée

# 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

Haricots

Points de terminaison

Les points de terminaison sont annotés avec org.springframework.boot.actuate.endpoint.annotation.Endpoint, et ce sont des beans et gérés par Spring's BeanFactory.

Point de terminaison Classe Créé par ête> métriques
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

Prométhée org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint

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

classe org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping

Ceci est créé par org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration#webEndpointServletHandlerMapping

. Les informations sur les points de terminaison sont fournies par

org.springframework.boot.actuate.endpoint.web.annotation.WebEndpointDiscoverer. Le mappage entre le chemin et les points de terminaison sera enregistré dans org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping#initHandlerMethods

.

Il implémente l'interface

org.springframework.web.servlet.HandlerMapping, de sorte que l'instance sera enregistrée dans DispatcherServlet
pendant la construction de l'instance.

spring.jmx.enabled=true
Exposer les points de terminaison à JMX

Ajoutez simplement une ligne dans src/main/resources/application.properties

L'association des points de terminaison avec MBeanServer se fait par org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn