Heim  >  Artikel  >  Java  >  So fügen Sie Zählerdaten zum Metrikendpunkt von Spring Boot Actuator hinzu

So fügen Sie Zählerdaten zum Metrikendpunkt von Spring Boot Actuator hinzu

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 20:16:02385Durchsuche

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

Schritt

Fügen Sie zunächst die folgende Abhängigkeit hinzu

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>

Dann werden Endpunkte über den Webzugriff aktiviert

src/main/resources/application.properties

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

Eine Singleton-Komponente hinzufügen

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

}

Schließlich kann auf metrische Daten zugegriffen werden über

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

/actuator/prometheus

# 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

Bohnen

Endpunkte

Endpunkte werden mit org.springframework.boot.actuate.endpoint.annotation.Endpoint annotiert, und sie sind Beans und werden von Springs BeanFactory verwaltet.

Endpunkt Klasse Erstellt von Metriken
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

Prometheus 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 Klasse

Dies wird erstellt von org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration#webEndpointServletHandlerMapping

. Endpunktinformationen werden von

org.springframework.boot.actuate.endpoint.web.annotation.WebEndpointDiscoverer bereitgestellt. Die Zuordnung zwischen Pfad und Endpunkten wird in org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping#initHandlerMethods

registriert.

Es implementiert die Schnittstelle

org.springframework.web.servlet.HandlerMapping, sodass die Instanz während der Instanzkonstruktion im DispatcherServlet
registriert wird.

spring.jmx.enabled=true
Endpunkte für JMX verfügbar machen

Fügen Sie einfach eine Zeile in src/main/resources/application.properties

ein Die Zuordnung der Endpunkte zu MBeanServer erfolgt durch org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration.

Das obige ist der detaillierte Inhalt vonSo fügen Sie Zählerdaten zum Metrikendpunkt von Spring Boot Actuator hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn