Maison > Java > javaDidacticiel > le corps du texte

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
294 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!

source:dev.to
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!