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
Endpunkte werden mit org.springframework.boot.actuate.endpoint.annotation.Endpoint annotiert, und sie sind Beans und werden von Springs BeanFactory verwaltet.
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.autoconfigure.metrics.export.prometheus.PrometheusMetricsExportAutoConfiguration.PrometheusScrapeEndpointConfiguration#prometheusEndpoint
Dies wird erstellt von org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration#webEndpointServletHandlerMapping
. Endpunktinformationen werden vonorg.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.org.springframework.web.servlet.HandlerMapping, sodass die Instanz während der Instanzkonstruktion im DispatcherServlet
registriert wird.
spring.jmx.enabled=trueEndpunkte für JMX verfügbar machen
Fügen Sie einfach eine Zeile in src/main/resources/application.properties
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!