Browse Source

Upgrade to Micrometer 1.10.0-SNAPSHOT.

Closes #4151.
pull/4158/head
Greg L. Turnquist 3 years ago committed by Christoph Strobl
parent
commit
1fe1c13531
No known key found for this signature in database
GPG Key ID: 8CC1AB53391458C8
  1. 14
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/DefaultMongoHandlerObservationConvention.java
  2. 4
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerObservationConvention.java
  3. 6
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservation.java
  4. 16
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservationCommandListener.java
  5. 12
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/observability/MongoObservationCommandListenerForTracingTests.java
  6. 21
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/observability/MongoObservationCommandListenerTests.java
  7. 6
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/observability/ZipkinIntegrationTests.java
  8. 2
      src/main/asciidoc/reference/observability.adoc

14
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/DefaultMongoHandlerKeyValuesProvider.java → spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/DefaultMongoHandlerObservationConvention.java

@ -26,12 +26,12 @@ import com.mongodb.connection.ConnectionId;
import com.mongodb.event.CommandStartedEvent; import com.mongodb.event.CommandStartedEvent;
/** /**
* Default {@link MongoHandlerKeyValuesProvider} implementation. * Default {@link MongoHandlerObservationConvention} implementation.
* *
* @author Greg Turnquist * @author Greg Turnquist
* @since 4.0.0 * @since 4.0.0
*/ */
public class DefaultMongoHandlerKeyValuesProvider implements MongoHandlerKeyValuesProvider { public class DefaultMongoHandlerObservationConvention implements MongoHandlerObservationConvention {
@Override @Override
public KeyValues getLowCardinalityKeyValues(MongoHandlerContext context) { public KeyValues getLowCardinalityKeyValues(MongoHandlerContext context) {
@ -40,7 +40,7 @@ public class DefaultMongoHandlerKeyValuesProvider implements MongoHandlerKeyValu
if (context.getCollectionName() != null) { if (context.getCollectionName() != null) {
keyValues = keyValues keyValues = keyValues
.and(KeyValue.of(LowCardinalityCommandKeyNames.MONGODB_COLLECTION.getKeyName(), context.getCollectionName())); .and(LowCardinalityCommandKeyNames.MONGODB_COLLECTION.withValue(context.getCollectionName()));
} }
KeyValue connectionTag = connectionTag(context.getCommandStartedEvent()); KeyValue connectionTag = connectionTag(context.getCommandStartedEvent());
@ -54,8 +54,8 @@ public class DefaultMongoHandlerKeyValuesProvider implements MongoHandlerKeyValu
@Override @Override
public KeyValues getHighCardinalityKeyValues(MongoHandlerContext context) { public KeyValues getHighCardinalityKeyValues(MongoHandlerContext context) {
return KeyValues.of(KeyValue.of(HighCardinalityCommandKeyNames.MONGODB_COMMAND.getKeyName(), return KeyValues.of(
context.getCommandStartedEvent().getCommandName())); HighCardinalityCommandKeyNames.MONGODB_COMMAND.withValue(context.getCommandStartedEvent().getCommandName()));
} }
/** /**
@ -72,8 +72,8 @@ public class DefaultMongoHandlerKeyValuesProvider implements MongoHandlerKeyValu
ConnectionId connectionId = connectionDescription.getConnectionId(); ConnectionId connectionId = connectionDescription.getConnectionId();
if (connectionId != null) { if (connectionId != null) {
return KeyValue.of(LowCardinalityCommandKeyNames.MONGODB_CLUSTER_ID.getKeyName(), return LowCardinalityCommandKeyNames.MONGODB_CLUSTER_ID
connectionId.getServerId().getClusterId().getValue()); .withValue(connectionId.getServerId().getClusterId().getValue());
} }
} }

4
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerKeyValuesProvider.java → spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerObservationConvention.java

@ -18,12 +18,12 @@ package org.springframework.data.mongodb.observability;
import io.micrometer.observation.Observation; import io.micrometer.observation.Observation;
/** /**
* {@link Observation.KeyValuesProvider} for {@link MongoHandlerContext}. * {@link Observation.ObservationConvention} for {@link MongoHandlerContext}.
* *
* @author Greg Turnquist * @author Greg Turnquist
* @since 4.0.0 * @since 4.0.0
*/ */
public interface MongoHandlerKeyValuesProvider extends Observation.KeyValuesProvider<MongoHandlerContext> { public interface MongoHandlerObservationConvention extends Observation.ObservationConvention<MongoHandlerContext> {
@Override @Override
default boolean supportsContext(Observation.Context context) { default boolean supportsContext(Observation.Context context) {

6
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservation.java

@ -63,7 +63,7 @@ enum MongoObservation implements DocumentedObservation {
*/ */
MONGODB_COLLECTION { MONGODB_COLLECTION {
@Override @Override
public String getKeyName() { public String asString() {
return "spring.data.mongodb.collection"; return "spring.data.mongodb.collection";
} }
}, },
@ -73,7 +73,7 @@ enum MongoObservation implements DocumentedObservation {
*/ */
MONGODB_CLUSTER_ID { MONGODB_CLUSTER_ID {
@Override @Override
public String getKeyName() { public String asString() {
return "spring.data.mongodb.cluster_id"; return "spring.data.mongodb.cluster_id";
} }
} }
@ -89,7 +89,7 @@ enum MongoObservation implements DocumentedObservation {
*/ */
MONGODB_COMMAND { MONGODB_COMMAND {
@Override @Override
public String getKeyName() { public String asString() {
return "spring.data.mongodb.command"; return "spring.data.mongodb.command";
} }
} }

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

@ -36,19 +36,18 @@ import com.mongodb.event.CommandSucceededEvent;
* @author Greg Turnquist * @author Greg Turnquist
* @since 4.0.0 * @since 4.0.0
*/ */
public final class MongoObservationCommandListener public final class MongoObservationCommandListener implements CommandListener {
implements CommandListener, Observation.KeyValuesProviderAware<MongoHandlerKeyValuesProvider> {
private static final Log log = LogFactory.getLog(MongoObservationCommandListener.class); private static final Log log = LogFactory.getLog(MongoObservationCommandListener.class);
private final ObservationRegistry observationRegistry; private final ObservationRegistry observationRegistry;
private MongoHandlerKeyValuesProvider keyValuesProvider; private MongoHandlerObservationConvention observationConvention;
public MongoObservationCommandListener(ObservationRegistry observationRegistry) { public MongoObservationCommandListener(ObservationRegistry observationRegistry) {
this.observationRegistry = observationRegistry; this.observationRegistry = observationRegistry;
this.keyValuesProvider = new DefaultMongoHandlerKeyValuesProvider(); this.observationConvention = new DefaultMongoHandlerObservationConvention();
} }
@Override @Override
@ -130,7 +129,7 @@ public final class MongoObservationCommandListener
/** /**
* Extract the {@link Observation} from MongoDB's {@link RequestContext}. * Extract the {@link Observation} from MongoDB's {@link RequestContext}.
* *
* @param context * @param context
* @return * @return
*/ */
@ -160,7 +159,7 @@ public final class MongoObservationCommandListener
Observation observation = MongoObservation.MONGODB_COMMAND_OBSERVATION Observation observation = MongoObservation.MONGODB_COMMAND_OBSERVATION
.observation(this.observationRegistry, observationContext) // .observation(this.observationRegistry, observationContext) //
.contextualName(observationContext.getContextualName()) // .contextualName(observationContext.getContextualName()) //
.keyValuesProvider(this.keyValuesProvider) // .observationConvention(this.observationConvention) //
.start(); .start();
requestContext.put(Observation.class, observation); requestContext.put(Observation.class, observation);
@ -171,9 +170,4 @@ public final class MongoObservationCommandListener
"Created a child observation [" + observation + "] for mongo instrumentation and put it in mongo context"); "Created a child observation [" + observation + "] for mongo instrumentation and put it in mongo context");
} }
} }
@Override
public void setKeyValuesProvider(MongoHandlerKeyValuesProvider mongoHandlerKeyValuesProvider) {
this.keyValuesProvider = mongoHandlerKeyValuesProvider;
}
} }

12
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/observability/MongoObservationCommandListenerForTracingTests.java

@ -16,7 +16,7 @@
package org.springframework.data.mongodb.observability; package org.springframework.data.mongodb.observability;
import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.observation.TimerObservationHandler; import io.micrometer.core.instrument.observation.DefaultMeterObservationHandler;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import io.micrometer.observation.Observation; import io.micrometer.observation.Observation;
import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.ObservationRegistry;
@ -67,7 +67,7 @@ class MongoObservationCommandListenerForTracingTests {
this.meterRegistry = new SimpleMeterRegistry(); this.meterRegistry = new SimpleMeterRegistry();
this.observationRegistry = ObservationRegistry.create(); this.observationRegistry = ObservationRegistry.create();
this.observationRegistry.observationConfig().observationHandler(new TimerObservationHandler(meterRegistry)); this.observationRegistry.observationConfig().observationHandler(new DefaultMeterObservationHandler(meterRegistry));
this.observationRegistry.observationConfig().observationHandler(handler); this.observationRegistry.observationConfig().observationHandler(handler);
this.listener = new MongoObservationCommandListener(observationRegistry); this.listener = new MongoObservationCommandListener(observationRegistry);
@ -135,7 +135,7 @@ class MongoObservationCommandListenerForTracingTests {
* Execute MongoDB's {@link com.mongodb.event.CommandListener#commandStarted(CommandStartedEvent)} and * Execute MongoDB's {@link com.mongodb.event.CommandListener#commandStarted(CommandStartedEvent)} and
* {@link com.mongodb.event.CommandListener#commandSucceeded(CommandSucceededEvent)} operations against the * {@link com.mongodb.event.CommandListener#commandSucceeded(CommandSucceededEvent)} operations against the
* {@link TestRequestContext} in order to inject some test data. * {@link TestRequestContext} in order to inject some test data.
* *
* @param testRequestContext * @param testRequestContext
*/ */
private void commandStartedAndSucceeded(TestRequestContext testRequestContext) { private void commandStartedAndSucceeded(TestRequestContext testRequestContext) {
@ -163,8 +163,8 @@ class MongoObservationCommandListenerForTracingTests {
.hasNameEqualTo("insert user") // .hasNameEqualTo("insert user") //
.hasKindEqualTo(Span.Kind.CLIENT) // .hasKindEqualTo(Span.Kind.CLIENT) //
.hasRemoteServiceNameEqualTo("mongodb-database") // .hasRemoteServiceNameEqualTo("mongodb-database") //
.hasTag(HighCardinalityCommandKeyNames.MONGODB_COMMAND.getKeyName(), "insert") // .hasTag(HighCardinalityCommandKeyNames.MONGODB_COMMAND.asString(), "insert") //
.hasTag(LowCardinalityCommandKeyNames.MONGODB_COLLECTION.getKeyName(), "user") // .hasTag(LowCardinalityCommandKeyNames.MONGODB_COLLECTION.asString(), "user") //
.hasTagWithKey(LowCardinalityCommandKeyNames.MONGODB_CLUSTER_ID.getKeyName()); .hasTagWithKey(LowCardinalityCommandKeyNames.MONGODB_CLUSTER_ID.asString());
} }
} }

21
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/observability/MongoObservationCommandListenerTests.java

@ -15,12 +15,11 @@
*/ */
package org.springframework.data.mongodb.observability; package org.springframework.data.mongodb.observability;
import static io.micrometer.core.tck.MeterRegistryAssert.*; import static io.micrometer.core.tck.MeterRegistryAssert.assertThat;
import io.micrometer.common.KeyValue;
import io.micrometer.common.KeyValues; import io.micrometer.common.KeyValues;
import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.observation.TimerObservationHandler; import io.micrometer.core.instrument.observation.DefaultMeterObservationHandler;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import io.micrometer.observation.Observation; import io.micrometer.observation.Observation;
import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.ObservationRegistry;
@ -42,7 +41,7 @@ import com.mongodb.event.CommandSucceededEvent;
/** /**
* Series of test cases exercising {@link MongoObservationCommandListener}. * Series of test cases exercising {@link MongoObservationCommandListener}.
* *
* @author Marcin Grzejszczak * @author Marcin Grzejszczak
* @author Greg Turnquist * @author Greg Turnquist
* @since 4.0.0 * @since 4.0.0
@ -59,7 +58,7 @@ class MongoObservationCommandListenerTests {
this.meterRegistry = new SimpleMeterRegistry(); this.meterRegistry = new SimpleMeterRegistry();
this.observationRegistry = ObservationRegistry.create(); this.observationRegistry = ObservationRegistry.create();
this.observationRegistry.observationConfig().observationHandler(new TimerObservationHandler(meterRegistry)); this.observationRegistry.observationConfig().observationHandler(new DefaultMeterObservationHandler(meterRegistry));
this.listener = new MongoObservationCommandListener(observationRegistry); this.listener = new MongoObservationCommandListener(observationRegistry);
} }
@ -149,8 +148,8 @@ class MongoObservationCommandListenerTests {
listener.commandSucceeded(new CommandSucceededEvent(testRequestContext, 0, null, "insert", null, 0)); listener.commandSucceeded(new CommandSucceededEvent(testRequestContext, 0, null, "insert", null, 0));
// then // then
assertThat(meterRegistry).hasTimerWithNameAndTags(HighCardinalityCommandKeyNames.MONGODB_COMMAND.getKeyName(), assertThat(meterRegistry).hasTimerWithNameAndTags(HighCardinalityCommandKeyNames.MONGODB_COMMAND.asString(),
KeyValues.of(KeyValue.of(LowCardinalityCommandKeyNames.MONGODB_COLLECTION.getKeyName(), "user"))); KeyValues.of(LowCardinalityCommandKeyNames.MONGODB_COLLECTION.withValue("user")));
} }
@Test @Test
@ -178,10 +177,10 @@ class MongoObservationCommandListenerTests {
private void assertThatTimerRegisteredWithTags() { private void assertThatTimerRegisteredWithTags() {
assertThat(meterRegistry) // assertThat(meterRegistry) //
.hasTimerWithNameAndTags(HighCardinalityCommandKeyNames.MONGODB_COMMAND.getKeyName(), .hasTimerWithNameAndTags(HighCardinalityCommandKeyNames.MONGODB_COMMAND.asString(),
KeyValues.of(KeyValue.of(LowCardinalityCommandKeyNames.MONGODB_COLLECTION.getKeyName(), "user"))) // KeyValues.of(LowCardinalityCommandKeyNames.MONGODB_COLLECTION.withValue("user"))) //
.hasTimerWithNameAndTagKeys(HighCardinalityCommandKeyNames.MONGODB_COMMAND.getKeyName(), .hasTimerWithNameAndTagKeys(HighCardinalityCommandKeyNames.MONGODB_COMMAND.asString(),
LowCardinalityCommandKeyNames.MONGODB_CLUSTER_ID.getKeyName()); LowCardinalityCommandKeyNames.MONGODB_CLUSTER_ID.asString());
} }
} }

6
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/observability/ZipkinIntegrationTests.java

@ -15,10 +15,10 @@
*/ */
package org.springframework.data.mongodb.observability; package org.springframework.data.mongodb.observability;
import static org.springframework.data.mongodb.test.util.Assertions.*; import static org.springframework.data.mongodb.test.util.Assertions.assertThat;
import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.observation.TimerObservationHandler; import io.micrometer.core.instrument.observation.DefaultMeterObservationHandler;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import io.micrometer.observation.Observation; import io.micrometer.observation.Observation;
import io.micrometer.observation.ObservationHandler; import io.micrometer.observation.ObservationHandler;
@ -80,7 +80,7 @@ public class ZipkinIntegrationTests extends SampleTestRunner {
private static final ObservationRegistry OBSERVATION_REGISTRY = ObservationRegistry.create(); private static final ObservationRegistry OBSERVATION_REGISTRY = ObservationRegistry.create();
static { static {
OBSERVATION_REGISTRY.observationConfig().observationHandler(new TimerObservationHandler(METER_REGISTRY)); OBSERVATION_REGISTRY.observationConfig().observationHandler(new DefaultMeterObservationHandler(METER_REGISTRY));
} }
@Autowired PersonRepository repository; @Autowired PersonRepository repository;

2
src/main/asciidoc/reference/observability.adoc

@ -3,6 +3,8 @@
[[observability]] [[observability]]
== Observability metadata == Observability metadata
include::{root-target}_conventions.adoc[]
include::{root-target}_metrics.adoc[] include::{root-target}_metrics.adoc[]
include::{root-target}_spans.adoc[] include::{root-target}_spans.adoc[]

Loading…
Cancel
Save