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. 5
      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;
/** /**
* Factory to create a {@link ContextProvider} to propagate the request context across tasks. Requires either * Factory to create a {@link ContextProvider} to propagate the request context across tasks. Requires either
* {@link SynchronousContextProvider} or {@link ReactiveContextProvider} to be present. * {@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 * @author Mark Paluch
* @since 3.0 * @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;
/** /**
* A {@link Observation.Context} that contains MongoDB events. * 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 Marcin Grzejszczak
* @author Greg Turnquist * @author Greg Turnquist

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

@ -20,7 +20,10 @@ import io.micrometer.observation.ObservationConvention;
/** /**
* {@link ObservationConvention} for {@link MongoHandlerContext}. * {@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 * @author Greg Turnquist
* @since 4 * @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;
/** /**
* Implement MongoDB's {@link CommandListener} using Micrometer's {@link Observation} API. * 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 OpenZipkin Brave Authors
* @author Marcin Grzejszczak * @author Marcin Grzejszczak

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

@ -1,5 +1,8 @@
/** /**
* Infrastructure to provide driver observability using Micrometer. * 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 @org.jspecify.annotations.NullMarked
package org.springframework.data.mongodb.observability; package org.springframework.data.mongodb.observability;

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

@ -3,11 +3,27 @@
[[mongodb.observability]] [[mongodb.observability]]
= Observability = Observability
Spring Data MongoDB currently has the most up-to-date code to support Observability in your MongoDB application. [NOTE]
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. 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 .Registering MongoDB Micrometer customizer setup
==== ====

Loading…
Cancel
Save