diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/HttpClientObservationsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/HttpClientObservationsAutoConfiguration.java index ad4117eeb8..ae3970478b 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/HttpClientObservationsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/HttpClientObservationsAutoConfiguration.java @@ -58,7 +58,7 @@ public class HttpClientObservationsAutoConfiguration { @Configuration(proxyBeanMethods = false) @ConditionalOnClass(MeterRegistry.class) @ConditionalOnBean(MeterRegistry.class) - class MeterFilterConfiguration { + static class MeterFilterConfiguration { @Bean @Order(0) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateObservationConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateObservationConfiguration.java index 5ab46d1864..a92f23ef21 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateObservationConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateObservationConfiguration.java @@ -44,7 +44,7 @@ import org.springframework.web.client.RestTemplate; class RestTemplateObservationConfiguration { @Bean - ObservationRestTemplateCustomizer metricsRestTemplateCustomizer(ObservationRegistry observationRegistry, + ObservationRestTemplateCustomizer observationRestTemplateCustomizer(ObservationRegistry observationRegistry, ObservationProperties observationProperties, MetricsProperties metricsProperties, ObjectProvider optionalTagsProvider) { String metricName = metricsProperties.getWeb().getClient().getRequest().getMetricName(); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/WebClientObservationConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/WebClientObservationConfiguration.java index 16e0b7829c..5485e8eac5 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/WebClientObservationConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/WebClientObservationConfiguration.java @@ -41,7 +41,7 @@ import org.springframework.web.reactive.function.client.WebClient; class WebClientObservationConfiguration { @Bean - ObservationWebClientCustomizer metricsWebClientCustomizer(ObservationRegistry observationRegistry, + ObservationWebClientCustomizer observationWebClientCustomizer(ObservationRegistry observationRegistry, ObservationProperties observationProperties, ObjectProvider optionalTagsProvider, MetricsProperties metricsProperties) { String metricName = metricsProperties.getWeb().getClient().getRequest().getMetricName(); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/ClientObservationConventionAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/ClientObservationConventionAdapterTests.java index 616b377fca..1f53cc1842 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/ClientObservationConventionAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/ClientObservationConventionAdapterTests.java @@ -65,7 +65,7 @@ class ClientObservationConventionAdapterTests { } @Test - void shouldOnlySupportClientHttpObservationContext() { + void shouldOnlySupportClientObservationContext() { assertThat(this.convention.supportsContext(this.context)).isTrue(); assertThat(this.convention.supportsContext(new OtherContext())).isFalse(); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateObservationConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateObservationConfigurationTests.java index 2af29ca18a..64cba8f93d 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateObservationConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateObservationConfigurationTests.java @@ -139,7 +139,8 @@ class RestTemplateObservationConfigurationTests { @Test void backsOffWhenRestTemplateBuilderIsMissing() { new ApplicationContextRunner().with(MetricsRun.simple()) - .withConfiguration(AutoConfigurations.of(HttpClientObservationsAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(ObservationAutoConfiguration.class, + HttpClientObservationsAutoConfiguration.class)) .run((context) -> assertThat(context).doesNotHaveBean(DefaultRestTemplateExchangeTagsProvider.class) .doesNotHaveBean(ObservationRestTemplateCustomizer.class)); } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestTemplateCustomizerTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestTemplateCustomizerTests.java index d79923129f..815ffc4d82 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestTemplateCustomizerTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestTemplateCustomizerTests.java @@ -16,13 +16,11 @@ package org.springframework.boot.actuate.metrics.web.client; -import io.micrometer.observation.ObservationConvention; import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.tck.TestObservationRegistry; import org.junit.jupiter.api.Test; import org.springframework.http.client.observation.DefaultClientHttpObservationConvention; -import org.springframework.test.util.ReflectionTestUtils; import org.springframework.web.client.RestTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -46,11 +44,10 @@ class ObservationRestTemplateCustomizerTests { @Test void shouldCustomizeObservationConfiguration() { this.customizer.customize(this.restTemplate); - assertThat((ObservationRegistry) ReflectionTestUtils.getField(this.restTemplate, "observationRegistry")) - .isEqualTo(this.observationRegistry); - assertThat((ObservationConvention) ReflectionTestUtils.getField(this.restTemplate, "observationConvention")) - .isInstanceOf(DefaultClientHttpObservationConvention.class).extracting("name") - .isEqualTo(TEST_METRIC_NAME); + assertThat(this.restTemplate).hasFieldOrPropertyWithValue("observationRegistry", this.observationRegistry); + assertThat(this.restTemplate).extracting("observationConvention") + .isInstanceOf(DefaultClientHttpObservationConvention.class) + .hasFieldOrPropertyWithValue("name", TEST_METRIC_NAME); } } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/reactive/client/ObservationWebClientCustomizerTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/reactive/client/ObservationWebClientCustomizerTests.java index 442708b5fa..85ec0ae59a 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/reactive/client/ObservationWebClientCustomizerTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/reactive/client/ObservationWebClientCustomizerTests.java @@ -16,12 +16,9 @@ package org.springframework.boot.actuate.metrics.web.reactive.client; -import io.micrometer.observation.ObservationConvention; -import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.tck.TestObservationRegistry; import org.junit.jupiter.api.Test; -import org.springframework.test.util.ReflectionTestUtils; import org.springframework.web.reactive.function.client.ClientObservationConvention; import org.springframework.web.reactive.function.client.DefaultClientObservationConvention; import org.springframework.web.reactive.function.client.WebClient; @@ -51,10 +48,10 @@ class ObservationWebClientCustomizerTests { @Test void shouldCustomizeObservationConfiguration() { this.customizer.customize(this.clientBuilder); - assertThat((ObservationRegistry) ReflectionTestUtils.getField(this.clientBuilder, "observationRegistry")) - .isEqualTo(this.observationRegistry); - assertThat((ObservationConvention) ReflectionTestUtils.getField(this.clientBuilder, "observationConvention")) - .isInstanceOf(DefaultClientObservationConvention.class).extracting("name").isEqualTo(TEST_METRIC_NAME); + assertThat(this.clientBuilder).hasFieldOrPropertyWithValue("observationRegistry", this.observationRegistry); + assertThat(this.clientBuilder).extracting("observationConvention") + .isInstanceOf(DefaultClientObservationConvention.class) + .hasFieldOrPropertyWithValue("name", TEST_METRIC_NAME); } } diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/actuator/metrics.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/actuator/metrics.adoc index 1fd451e20d..f1cc7b10e4 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/actuator/metrics.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/actuator/metrics.adoc @@ -862,7 +862,7 @@ For that, you have to inject the auto-configured builder and use it to create in * `RestTemplateBuilder` for `RestTemplate` * `WebClient.Builder` for `WebClient` -You can also manually apply the customizers responsible for this instrumentation, namely `ObservationRestTemplateCustomizer` and `MetricsWebClientCustomizer`. +You can also manually apply the customizers responsible for this instrumentation, namely `ObservationRestTemplateCustomizer` and `ObservationWebClientCustomizer`. By default, metrics are generated with the name, `http.client.requests`. You can customize the name by setting the configprop:management.observations.http.client.requests.name[] property.