먼저 다음 종속성을 추가합니다
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>
그런 다음 웹 액세스를 통해 엔드포인트를 활성화합니다
src/main/resources/application.properties
management.endpoints.web.exposure.include=prometheus,metrics
싱글톤 구성요소 추가
@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(); } }
마지막으로 다음을 통해 측정항목 데이터에 액세스할 수 있습니다.
/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":[]}
/액추에이터/프로메테우스
# 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
엔드포인트는 org.springframework.boot.actuate.endpoint.annotation.Endpoint로 주석 처리되며 Bean이며 Spring의 BeanFactory에서 관리됩니다.
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
org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration#webEndpointServletHandlerMapping
에 의해 생성됩니다. 엔드포인트 정보는org.springframework.boot.actuate.endpoint.web.annotation.WebEndpointDiscoverer에서 제공됩니다. 경로와 엔드포인트 간의 매핑은 org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping#initHandlerMethods
에 등록됩니다.org.springframework.web.servlet.HandlerMapping 인터페이스를 구현하므로 인스턴스 생성 중에 인스턴스가 DispatcherServlet
에 등록됩니다.
spring.jmx.enabled=trueJMX에 엔드포인트 노출
src/main/resources/application.properties
위 내용은 Spring Boot Actuator 메트릭 엔드포인트에 미터 데이터를 추가하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!