Skip to content

Commit 1c9e22c

Browse files
committed
Merge branch '3.0.x'
Closes gh-34121
2 parents 6973d61 + 3551030 commit 1c9e22c

File tree

4 files changed

+53
-8
lines changed

4 files changed

+53
-8
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2022 the original author or authors.
2+
* Copyright 2012-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@
2323
import io.micrometer.core.instrument.observation.MeterObservationHandler;
2424
import io.micrometer.observation.GlobalObservationConvention;
2525
import io.micrometer.observation.Observation;
26+
import io.micrometer.observation.ObservationFilter;
2627
import io.micrometer.observation.ObservationHandler;
2728
import io.micrometer.observation.ObservationPredicate;
2829
import io.micrometer.observation.ObservationRegistry;
@@ -62,9 +63,10 @@ static ObservationRegistryPostProcessor observationRegistryPostProcessor(
6263
ObjectProvider<ObservationPredicate> observationPredicates,
6364
ObjectProvider<GlobalObservationConvention<?>> observationConventions,
6465
ObjectProvider<ObservationHandler<?>> observationHandlers,
65-
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping) {
66+
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping,
67+
ObjectProvider<ObservationFilter> observationFilters) {
6668
return new ObservationRegistryPostProcessor(observationRegistryCustomizers, observationPredicates,
67-
observationConventions, observationHandlers, observationHandlerGrouping);
69+
observationConventions, observationHandlers, observationHandlerGrouping, observationFilters);
6870
}
6971

7072
@Bean

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationRegistryConfigurer.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2022 the original author or authors.
2+
* Copyright 2012-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -19,6 +19,7 @@
1919
import java.util.List;
2020

2121
import io.micrometer.observation.GlobalObservationConvention;
22+
import io.micrometer.observation.ObservationFilter;
2223
import io.micrometer.observation.ObservationHandler;
2324
import io.micrometer.observation.ObservationPredicate;
2425
import io.micrometer.observation.ObservationRegistry;
@@ -48,22 +49,27 @@ class ObservationRegistryConfigurer {
4849

4950
private final ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping;
5051

52+
private final ObjectProvider<ObservationFilter> observationFilters;
53+
5154
ObservationRegistryConfigurer(ObjectProvider<ObservationRegistryCustomizer<?>> customizers,
5255
ObjectProvider<ObservationPredicate> observationPredicates,
5356
ObjectProvider<GlobalObservationConvention<?>> observationConventions,
5457
ObjectProvider<ObservationHandler<?>> observationHandlers,
55-
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping) {
58+
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping,
59+
ObjectProvider<ObservationFilter> observationFilters) {
5660
this.customizers = customizers;
5761
this.observationPredicates = observationPredicates;
5862
this.observationConventions = observationConventions;
5963
this.observationHandlers = observationHandlers;
6064
this.observationHandlerGrouping = observationHandlerGrouping;
65+
this.observationFilters = observationFilters;
6166
}
6267

6368
void configure(ObservationRegistry registry) {
6469
registerObservationPredicates(registry);
6570
registerGlobalObservationConventions(registry);
6671
registerHandlers(registry);
72+
registerFilters(registry);
6773
customize(registry);
6874
}
6975

@@ -80,6 +86,10 @@ private void registerGlobalObservationConventions(ObservationRegistry registry)
8086
this.observationConventions.orderedStream().forEach(registry.observationConfig()::observationConvention);
8187
}
8288

89+
private void registerFilters(ObservationRegistry registry) {
90+
this.observationFilters.orderedStream().forEach(registry.observationConfig()::observationFilter);
91+
}
92+
8393
@SuppressWarnings("unchecked")
8494
private void customize(ObservationRegistry registry) {
8595
LambdaSafe.callbacks(ObservationRegistryCustomizer.class, asOrderedList(this.customizers), registry)

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationRegistryPostProcessor.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2022 the original author or authors.
2+
* Copyright 2012-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.actuate.autoconfigure.observation;
1818

1919
import io.micrometer.observation.GlobalObservationConvention;
20+
import io.micrometer.observation.ObservationFilter;
2021
import io.micrometer.observation.ObservationHandler;
2122
import io.micrometer.observation.ObservationPredicate;
2223
import io.micrometer.observation.ObservationRegistry;
@@ -44,18 +45,22 @@ class ObservationRegistryPostProcessor implements BeanPostProcessor {
4445

4546
private final ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping;
4647

48+
private final ObjectProvider<ObservationFilter> observationFilters;
49+
4750
private volatile ObservationRegistryConfigurer configurer;
4851

4952
ObservationRegistryPostProcessor(ObjectProvider<ObservationRegistryCustomizer<?>> observationRegistryCustomizers,
5053
ObjectProvider<ObservationPredicate> observationPredicates,
5154
ObjectProvider<GlobalObservationConvention<?>> observationConventions,
5255
ObjectProvider<ObservationHandler<?>> observationHandlers,
53-
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping) {
56+
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping,
57+
ObjectProvider<ObservationFilter> observationFilters) {
5458
this.observationRegistryCustomizers = observationRegistryCustomizers;
5559
this.observationPredicates = observationPredicates;
5660
this.observationConventions = observationConventions;
5761
this.observationHandlers = observationHandlers;
5862
this.observationHandlerGrouping = observationHandlerGrouping;
63+
this.observationFilters = observationFilters;
5964
}
6065

6166
@Override
@@ -70,7 +75,7 @@ private ObservationRegistryConfigurer getConfigurer() {
7075
if (this.configurer == null) {
7176
this.configurer = new ObservationRegistryConfigurer(this.observationRegistryCustomizers,
7277
this.observationPredicates, this.observationConventions, this.observationHandlers,
73-
this.observationHandlerGrouping);
78+
this.observationHandlerGrouping, this.observationFilters);
7479
}
7580
return this.configurer;
7681
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfigurationTests.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import io.micrometer.observation.GlobalObservationConvention;
2929
import io.micrometer.observation.Observation;
3030
import io.micrometer.observation.Observation.Context;
31+
import io.micrometer.observation.ObservationFilter;
3132
import io.micrometer.observation.ObservationHandler;
3233
import io.micrometer.observation.ObservationHandler.AllMatchingCompositeObservationHandler;
3334
import io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler;
@@ -176,6 +177,16 @@ void autoConfiguresObservationPredicates() {
176177
});
177178
}
178179

180+
@Test
181+
void autoConfiguresObservationFilters() {
182+
this.contextRunner.withUserConfiguration(ObservationFilters.class).run((context) -> {
183+
ObservationRegistry observationRegistry = context.getBean(ObservationRegistry.class);
184+
Observation.start("filtered", observationRegistry).stop();
185+
MeterRegistry meterRegistry = context.getBean(MeterRegistry.class);
186+
assertThat(meterRegistry.get("filtered").tag("filter", "one").timer().count()).isOne();
187+
});
188+
}
189+
179190
@Test
180191
void autoConfiguresGlobalObservationConventions() {
181192
this.contextRunner.withUserConfiguration(CustomGlobalObservationConvention.class).run((context) -> {
@@ -273,6 +284,23 @@ ObservationPredicate customPredicate() {
273284

274285
}
275286

287+
@Configuration(proxyBeanMethods = false)
288+
static class ObservationFilters {
289+
290+
@Bean
291+
@Order(1)
292+
ObservationFilter observationFilterOne() {
293+
return (context) -> context.addLowCardinalityKeyValue(KeyValue.of("filter", "one"));
294+
}
295+
296+
@Bean
297+
@Order(0)
298+
ObservationFilter observationFilterTwo() {
299+
return (context) -> context.addLowCardinalityKeyValue(KeyValue.of("filter", "two"));
300+
}
301+
302+
}
303+
276304
@Configuration(proxyBeanMethods = false)
277305
static class CustomGlobalObservationConvention {
278306

0 commit comments

Comments
 (0)