Maison > Java > javaDidacticiel > 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
Libérer: 2024-11-01 20:16:02
original
473 Les gens l'ont consulté

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>
Copier après la connexion

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

src/main/resources/application.properties

management.endpoints.web.exposure.include=prometheus,metrics
Copier après la connexion

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

}
Copier après la connexion

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":[]}
Copier après la connexion

/actuator/metrics/mymetrics.gauge

{"name":"mymetrics.gauge","description":"MyMetrics gauge","baseUnit":null,"measurements":[{"statistic":"VALUE","value":0.7618330619753056}],"availableTags":[]}
Copier après la connexion

/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
Copier après la connexion

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
Copier après la connexion
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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal