Skip to content

Commit 1fc2f99

Browse files
committed
Update server side auto-time metrics configuration
Update auto-time requests related config to: - "management.metrics.web.server.request.auto-time.enabled" - "management.metrics.web.server.request.auto-time.default-percentiles" - "management.metrics.web.server.request.auto-time.default-histogram" Also, updated "requests-metric-name": old: "management.metrics.web.server.requests-metric-name" new: "management.metrics.web.server.request.metric-name"
1 parent 367e9e7 commit 1fc2f99

File tree

6 files changed

+71
-40
lines changed

6 files changed

+71
-40
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsProperties.java

Lines changed: 51 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
*
2929
* @author Jon Schneider
3030
* @author Alexander Abramov
31+
* @author Tadaya Tsuyukubo
3132
* @since 2.0.0
3233
*/
3334
@ConfigurationProperties("management.metrics")
@@ -127,12 +128,7 @@ public void setMaxUriTags(int maxUriTags) {
127128

128129
public static class Server {
129130

130-
private final AutoTimeRequests autoTimeRequests = new AutoTimeRequests();
131-
132-
/**
133-
* Name of the metric for received requests.
134-
*/
135-
private String requestsMetricName = "http.server.requests";
131+
private final Request request = new Request();
136132

137133
/**
138134
* Maximum number of unique URI tag values allowed. After the max number of
@@ -141,16 +137,22 @@ public static class Server {
141137
*/
142138
private int maxUriTags = 100;
143139

144-
public AutoTimeRequests getAutoTimeRequests() {
145-
return this.autoTimeRequests;
146-
}
147-
140+
/**
141+
* @deprecated since 2.2.0 in favor of {@link Request#getMetricName()}
142+
*/
148143
public String getRequestsMetricName() {
149-
return this.requestsMetricName;
144+
return this.request.getMetricName();
150145
}
151146

147+
/**
148+
* @deprecated since 2.2.0 in favor of {@link Request#setMetricName(String)}
149+
*/
152150
public void setRequestsMetricName(String requestsMetricName) {
153-
this.requestsMetricName = requestsMetricName;
151+
this.request.setMetricName(requestsMetricName);
152+
}
153+
154+
public Request getRequest() {
155+
return this.request;
154156
}
155157

156158
public int getMaxUriTags() {
@@ -161,7 +163,33 @@ public void setMaxUriTags(int maxUriTags) {
161163
this.maxUriTags = maxUriTags;
162164
}
163165

164-
public static class AutoTimeRequests {
166+
}
167+
168+
public static class Request {
169+
170+
/**
171+
* Automatically time requests.
172+
*/
173+
private final AutoTime autoTime = new AutoTime();
174+
175+
/**
176+
* Name of the metric for received requests.
177+
*/
178+
private String metricName = "http.server.requests";
179+
180+
public AutoTime getAutoTime() {
181+
return this.autoTime;
182+
}
183+
184+
public String getMetricName() {
185+
return this.metricName;
186+
}
187+
188+
public void setMetricName(String metricName) {
189+
this.metricName = metricName;
190+
}
191+
192+
public static class AutoTime {
165193

166194
/**
167195
* Whether requests handled by Spring MVC, WebFlux or Jersey should be
@@ -176,14 +204,14 @@ public static class AutoTimeRequests {
176204
* corresponding request handler. Any @Timed annotation presented will
177205
* have precedence.
178206
*/
179-
private List<Double> percentiles = new ArrayList<>();
207+
private List<Double> defaultPercentiles = new ArrayList<>();
180208

181209
/**
182210
* Default histogram when @Timed annotation is not presented on the
183211
* corresponding request handler. Any @Timed annotation presented will
184212
* have precedence.
185213
*/
186-
private boolean histogram;
214+
private boolean defaultHistogram;
187215

188216
public boolean isEnabled() {
189217
return this.enabled;
@@ -193,20 +221,20 @@ public void setEnabled(boolean enabled) {
193221
this.enabled = enabled;
194222
}
195223

196-
public List<Double> getPercentiles() {
197-
return this.percentiles;
224+
public List<Double> getDefaultPercentiles() {
225+
return this.defaultPercentiles;
198226
}
199227

200-
public void setPercentiles(List<Double> percentiles) {
201-
this.percentiles = percentiles;
228+
public void setDefaultPercentiles(List<Double> defaultPercentiles) {
229+
this.defaultPercentiles = defaultPercentiles;
202230
}
203231

204-
public boolean isHistogram() {
205-
return this.histogram;
232+
public boolean isDefaultHistogram() {
233+
return this.defaultHistogram;
206234
}
207235

208-
public void setHistogram(boolean histogram) {
209-
this.histogram = histogram;
236+
public void setDefaultHistogram(boolean defaultHistogram) {
237+
this.defaultHistogram = defaultHistogram;
210238
}
211239

212240
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jersey/JerseyServerMetricsAutoConfiguration.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,16 @@ public ResourceConfigCustomizer jerseyServerMetricsResourceConfigCustomizer(
7979
MeterRegistry meterRegistry, JerseyTagsProvider tagsProvider) {
8080
Server server = this.properties.getWeb().getServer();
8181
return (config) -> config.register(new MetricsApplicationEventListener(
82-
meterRegistry, tagsProvider, server.getRequestsMetricName(),
83-
server.getAutoTimeRequests().isEnabled(),
82+
meterRegistry, tagsProvider, server.getRequest().getMetricName(),
83+
server.getRequest().getAutoTime().isEnabled(),
8484
new AnnotationUtilsAnnotationFinder()));
8585
}
8686

8787
@Bean
8888
@Order(0)
8989
public MeterFilter jerseyMetricsUriTagFilter() {
90-
String metricName = this.properties.getWeb().getServer().getRequestsMetricName();
90+
String metricName = this.properties.getWeb().getServer().getRequest()
91+
.getMetricName();
9192
MeterFilter filter = new OnlyOnceLoggingDenyMeterFilter(() -> String
9293
.format("Reached the maximum number of URI tags for '%s'.", metricName));
9394
return MeterFilter.maximumAllowableTags(metricName, "uri",

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/reactive/WebFluxMetricsAutoConfiguration.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
2323
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties;
2424
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties.Web.Server;
25-
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties.Web.Server.AutoTimeRequests;
25+
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties.Web.Request.AutoTime;
2626
import org.springframework.boot.actuate.autoconfigure.metrics.OnlyOnceLoggingDenyMeterFilter;
2727
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
2828
import org.springframework.boot.actuate.metrics.web.reactive.server.DefaultWebFluxTagsProvider;
@@ -68,16 +68,17 @@ public DefaultWebFluxTagsProvider webfluxTagConfigurer() {
6868
public MetricsWebFilter webfluxMetrics(MeterRegistry registry,
6969
WebFluxTagsProvider tagConfigurer) {
7070
Server serverProperties = this.properties.getWeb().getServer();
71-
AutoTimeRequests autoTimeRequests = serverProperties.getAutoTimeRequests();
71+
AutoTime autotime = serverProperties.getRequest().getAutoTime();
7272
return new MetricsWebFilter(registry, tagConfigurer,
73-
serverProperties.getRequestsMetricName(), autoTimeRequests.isEnabled(),
74-
autoTimeRequests.getPercentiles(), autoTimeRequests.isHistogram());
73+
serverProperties.getRequest().getMetricName(), autotime.isEnabled(),
74+
autotime.getDefaultPercentiles(), autotime.isDefaultHistogram());
7575
}
7676

7777
@Bean
7878
@Order(0)
7979
public MeterFilter metricsHttpServerUriTagFilter() {
80-
String metricName = this.properties.getWeb().getServer().getRequestsMetricName();
80+
String metricName = this.properties.getWeb().getServer().getRequest()
81+
.getMetricName();
8182
MeterFilter filter = new OnlyOnceLoggingDenyMeterFilter(() -> String
8283
.format("Reached the maximum number of URI tags for '%s'.", metricName));
8384
return MeterFilter.maximumAllowableTags(metricName, "uri",

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
2525
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties;
2626
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties.Web.Server;
27-
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties.Web.Server.AutoTimeRequests;
27+
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties.Web.Request.AutoTime;
2828
import org.springframework.boot.actuate.autoconfigure.metrics.OnlyOnceLoggingDenyMeterFilter;
2929
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
3030
import org.springframework.boot.actuate.metrics.web.servlet.DefaultWebMvcTagsProvider;
@@ -80,10 +80,10 @@ public DefaultWebMvcTagsProvider webMvcTagsProvider() {
8080
public FilterRegistrationBean<WebMvcMetricsFilter> webMvcMetricsFilter(
8181
MeterRegistry registry, WebMvcTagsProvider tagsProvider) {
8282
Server serverProperties = this.properties.getWeb().getServer();
83-
AutoTimeRequests autoTimeRequests = serverProperties.getAutoTimeRequests();
83+
AutoTime autotime = serverProperties.getRequest().getAutoTime();
8484
WebMvcMetricsFilter filter = new WebMvcMetricsFilter(registry, tagsProvider,
85-
serverProperties.getRequestsMetricName(), autoTimeRequests.isEnabled(),
86-
autoTimeRequests.getPercentiles(), autoTimeRequests.isHistogram());
85+
serverProperties.getRequest().getMetricName(), autotime.isEnabled(),
86+
autotime.getDefaultPercentiles(), autotime.isDefaultHistogram());
8787
FilterRegistrationBean<WebMvcMetricsFilter> registration = new FilterRegistrationBean<>(
8888
filter);
8989
registration.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
@@ -94,7 +94,8 @@ public FilterRegistrationBean<WebMvcMetricsFilter> webMvcMetricsFilter(
9494
@Bean
9595
@Order(0)
9696
public MeterFilter metricsHttpServerUriTagFilter() {
97-
String metricName = this.properties.getWeb().getServer().getRequestsMetricName();
97+
String metricName = this.properties.getWeb().getServer().getRequest()
98+
.getMetricName();
9899
MeterFilter filter = new OnlyOnceLoggingDenyMeterFilter(() -> String
99100
.format("Reached the maximum number of URI tags for '%s'.", metricName));
100101
return MeterFilter.maximumAllowableTags(metricName, "uri",

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/reactive/WebFluxMetricsAutoConfigurationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public void metricsAreNotRecordedIfAutoTimeRequestsIsDisabled() {
102102
.withConfiguration(AutoConfigurations.of(WebFluxAutoConfiguration.class))
103103
.withUserConfiguration(TestController.class)
104104
.withPropertyValues(
105-
"management.metrics.web.server.auto-time-requests.enabled=false")
105+
"management.metrics.web.server.request.auto-time.enabled=false")
106106
.run((context) -> {
107107
MeterRegistry registry = getInitializedMeterRegistry(context);
108108
assertThat(registry.find("http.server.requests").meter()).isNull();

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfigurationTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,9 @@ public void autoTimeRequestsDefaultValues() {
145145
.withConfiguration(AutoConfigurations.of(MetricsAutoConfiguration.class,
146146
WebMvcAutoConfiguration.class))
147147
.withPropertyValues(
148-
"management.metrics.web.server.auto-time-requests.enabled=true",
149-
"management.metrics.web.server.auto-time-requests.percentiles=0.5,0.7",
150-
"management.metrics.web.server.auto-time-requests.histogram=true")
148+
"management.metrics.web.server.request.auto-time.enabled=true",
149+
"management.metrics.web.server.request.auto-time.default-percentiles=0.5,0.7",
150+
"management.metrics.web.server.request.auto-time.default-histogram=true")
151151
.run((context) -> {
152152
MeterRegistry registry = getInitializedMeterRegistry(context);
153153
Timer timer = registry.get("http.server.requests").timer();

0 commit comments

Comments
 (0)