Browse Source

Update observability configuration section.

Recommend using driver native API for observability.

See #5009
See #5078
Original pull request #5080
pull/5109/head
Christoph Strobl 2 months ago committed by Jens Schauder
parent
commit
0e1ff168d6
No known key found for this signature in database
GPG Key ID: 2BE5D185CD2A1CE6
  1. 3
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/ContextProviderFactory.java
  2. 3
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerContext.java
  3. 3
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerObservationConvention.java
  4. 3
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservationCommandListener.java
  5. 3
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/package-info.java
  6. 24
      src/main/antora/modules/ROOT/pages/observability/observability.adoc

3
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/ContextProviderFactory.java

@ -37,6 +37,9 @@ import com.mongodb.reactivestreams.client.ReactiveContextProvider; @@ -37,6 +37,9 @@ import com.mongodb.reactivestreams.client.ReactiveContextProvider;
/**
* Factory to create a {@link ContextProvider} to propagate the request context across tasks. Requires either
* {@link SynchronousContextProvider} or {@link ReactiveContextProvider} to be present.
* <p>
* <strong>NOTE:</strong> MongoDB Java Driver 5.7+ comes with observability directly built in which can be configured
* via {@code MongoClientSettings.Builder#observabilitySettings(ObservabilitySettings)}.
*
* @author Mark Paluch
* @since 3.0

3
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerContext.java

@ -35,6 +35,9 @@ import com.mongodb.event.CommandSucceededEvent; @@ -35,6 +35,9 @@ import com.mongodb.event.CommandSucceededEvent;
/**
* A {@link Observation.Context} that contains MongoDB events.
* <p>
* <strong>NOTE:</strong> MongoDB Java Driver 5.7+ comes with observability directly built in which can be configured
* via {@code MongoClientSettings.Builder#observabilitySettings(ObservabilitySettings)}.
*
* @author Marcin Grzejszczak
* @author Greg Turnquist

3
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerObservationConvention.java

@ -20,6 +20,9 @@ import io.micrometer.observation.ObservationConvention; @@ -20,6 +20,9 @@ import io.micrometer.observation.ObservationConvention;
/**
* {@link ObservationConvention} for {@link MongoHandlerContext}.
* <p>
* <strong>NOTE:</strong> MongoDB Java Driver 5.7+ comes with observability directly built in which can be configured
* via {@code MongoClientSettings.Builder#observabilitySettings(ObservabilitySettings)}.
*
* @author Greg Turnquist
* @since 4

3
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservationCommandListener.java

@ -36,6 +36,9 @@ import com.mongodb.event.CommandSucceededEvent; @@ -36,6 +36,9 @@ import com.mongodb.event.CommandSucceededEvent;
/**
* Implement MongoDB's {@link CommandListener} using Micrometer's {@link Observation} API.
* <p>
* <strong>NOTE:</strong> MongoDB Java Driver 5.7+ comes with observability directly built in which can be configured
* via {@code MongoClientSettings.Builder#observabilitySettings(ObservabilitySettings)}.
*
* @author OpenZipkin Brave Authors
* @author Marcin Grzejszczak

3
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/package-info.java

@ -1,5 +1,8 @@ @@ -1,5 +1,8 @@
/**
* Infrastructure to provide driver observability using Micrometer.
* <p>
* <strong>NOTE:</strong> MongoDB Java Driver 5.7+ comes with observability directly built in which can be configured
* via {@code MongoClientSettings.Builder#observabilitySettings(ObservabilitySettings)}.
*/
@org.jspecify.annotations.NullMarked
package org.springframework.data.mongodb.observability;

24
src/main/antora/modules/ROOT/pages/observability/observability.adoc

@ -3,11 +3,27 @@ @@ -3,11 +3,27 @@
[[mongodb.observability]]
= Observability
Spring Data MongoDB currently has the most up-to-date code to support Observability in your MongoDB application.
These changes, however, haven't been picked up by Spring Boot (yet).
Until those changes are applied, if you wish to use Spring Data MongoDB's flavor of Observability, you must carry out the following steps.
[NOTE]
====
MongoDB Java Driver 5.7+ comes with observability directly built in.
We recommend switching to the driver native `ObservabilitySettings`, which can be configured as outlined below:
[source,java]
----
@Bean
MongoClientSettingsBuilderCustomizer mongoDbObservabilitySettings(ObservationRegistry registry) {
return (clientSettingsBuilder) -> {
clientSettingsBuilder.observabilitySettings(ObservabilitySettings.micrometerBuilder()
.observationRegistry(observationRegistry)
.build());
};
}
----
In the light of driver native observability support, the types within the Spring Data provided _org.springframework.data.mongodb.observability_ package will not see further development and are subject to deprecation/removal in subsequent releases.
====
To use Spring Data MongoDB's flavor of Observability you must:
. First of all, you must opt into Spring Data MongoDB's configuration settings by customizing `MongoClientSettings` through either your `@SpringBootApplication` class or one of your configuration classes.
. opt into Spring Data MongoDB's configuration settings by customizing `MongoClientSettings` through either your `@SpringBootApplication` class or one of your configuration classes.
+
.Registering MongoDB Micrometer customizer setup
====

Loading…
Cancel
Save