|
1 | 1 | /*
|
2 |
| - * Copyright 2012-2023 the original author or authors. |
| 2 | + * Copyright 2012-2024 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
30 | 30 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
31 | 31 | import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
32 | 32 | import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
| 33 | +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
33 | 34 | import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
34 | 35 | import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
35 | 36 | import org.springframework.context.annotation.Bean;
|
36 | 37 | import org.springframework.core.annotation.Order;
|
| 38 | +import org.springframework.http.server.reactive.observation.DefaultServerRequestObservationConvention; |
| 39 | +import org.springframework.http.server.reactive.observation.ServerRequestObservationConvention; |
37 | 40 |
|
38 | 41 | /**
|
39 | 42 | * {@link EnableAutoConfiguration Auto-configuration} for instrumentation of Spring
|
|
42 | 45 | * @author Brian Clozel
|
43 | 46 | * @author Jon Schneider
|
44 | 47 | * @author Dmytro Nosan
|
| 48 | + * @author Moritz Halbritter |
45 | 49 | * @since 3.0.0
|
46 | 50 | */
|
47 | 51 | @AutoConfiguration(after = { SimpleMetricsExportAutoConfiguration.class, ObservationAutoConfiguration.class })
|
|
51 | 55 | @EnableConfigurationProperties({ MetricsProperties.class, ObservationProperties.class })
|
52 | 56 | public class WebFluxObservationAutoConfiguration {
|
53 | 57 |
|
| 58 | + private final ObservationProperties observationProperties; |
| 59 | + |
| 60 | + WebFluxObservationAutoConfiguration(ObservationProperties observationProperties) { |
| 61 | + this.observationProperties = observationProperties; |
| 62 | + } |
| 63 | + |
54 | 64 | @Bean
|
55 | 65 | @Order(0)
|
56 |
| - MeterFilter metricsHttpServerUriTagFilter(MetricsProperties metricsProperties, |
57 |
| - ObservationProperties observationProperties) { |
58 |
| - String name = observationProperties.getHttp().getServer().getRequests().getName(); |
| 66 | + MeterFilter metricsHttpServerUriTagFilter(MetricsProperties metricsProperties) { |
| 67 | + String name = this.observationProperties.getHttp().getServer().getRequests().getName(); |
59 | 68 | MeterFilter filter = new OnlyOnceLoggingDenyMeterFilter(
|
60 | 69 | () -> "Reached the maximum number of URI tags for '%s'.".formatted(name));
|
61 | 70 | return MeterFilter.maximumAllowableTags(name, "uri", metricsProperties.getWeb().getServer().getMaxUriTags(),
|
62 | 71 | filter);
|
63 | 72 | }
|
64 | 73 |
|
| 74 | + @Bean |
| 75 | + @ConditionalOnMissingBean(ServerRequestObservationConvention.class) |
| 76 | + DefaultServerRequestObservationConvention defaultServerRequestObservationConvention() { |
| 77 | + return new DefaultServerRequestObservationConvention( |
| 78 | + this.observationProperties.getHttp().getServer().getRequests().getName()); |
| 79 | + } |
| 80 | + |
65 | 81 | }
|
0 commit comments