This commit is contained in:
Marcin Grzejszczak
2022-07-01 17:46:15 +02:00
parent 0e56642c53
commit 3a669ff4f4
7 changed files with 30 additions and 18 deletions

View File

@@ -119,6 +119,7 @@
<maven-checkstyle-plugin.includeTestSourceDirectory>true <maven-checkstyle-plugin.includeTestSourceDirectory>true
</maven-checkstyle-plugin.includeTestSourceDirectory> </maven-checkstyle-plugin.includeTestSourceDirectory>
<java.version>17</java.version> <java.version>17</java.version>
<micrometer.version>1.10.0-SNAPSHOT</micrometer.version>
</properties> </properties>
<build> <build>

View File

@@ -117,10 +117,12 @@
<dependency> <dependency>
<groupId>io.micrometer</groupId> <groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId> <artifactId>micrometer-core</artifactId>
<version>${micrometer.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.micrometer</groupId> <groupId>io.micrometer</groupId>
<artifactId>micrometer-observation</artifactId> <artifactId>micrometer-observation</artifactId>
<version>${micrometer.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>org.junit.jupiter</groupId>

View File

@@ -25,10 +25,15 @@ import io.micrometer.observation.Observation;
* @author Marcin Grzejszczak * @author Marcin Grzejszczak
* @since 3.0.0 * @since 3.0.0
*/ */
public class DefaultTaskKeyValuesProvider implements TaskKeyValuesProvider { public class DefaultTaskObservationConvention implements TaskObservationConvention {
@Override @Override
public KeyValues getLowCardinalityKeyValues(TaskObservationContext context) { public KeyValues getLowCardinalityKeyValues(TaskObservationContext context) {
return KeyValues.of(TaskDocumentedObservation.TaskRunnerTags.BEAN_NAME.of(context.getBeanName())); return KeyValues.of(TaskDocumentedObservation.TaskRunnerTags.BEAN_NAME.of(context.getBeanName()));
} }
@Override
public String getName() {
return "spring.cloud.task.runner";
}
} }

View File

@@ -28,7 +28,9 @@ import org.springframework.boot.ApplicationRunner;
* *
* @author Marcin Grzejszczak * @author Marcin Grzejszczak
*/ */
class ObservationApplicationRunner implements ApplicationRunner, Observation.KeyValuesProviderAware<TaskKeyValuesProvider> { class ObservationApplicationRunner implements ApplicationRunner, Observation.KeyValuesProviderAware<TaskObservationConvention> {
private static final DefaultTaskObservationConvention INSTANCE = new DefaultTaskObservationConvention();
private final BeanFactory beanFactory; private final BeanFactory beanFactory;
@@ -38,7 +40,7 @@ class ObservationApplicationRunner implements ApplicationRunner, Observation.Key
private ObservationRegistry registry; private ObservationRegistry registry;
private TaskKeyValuesProvider keyValuesProvider = new DefaultTaskKeyValuesProvider(); private TaskObservationConvention taskObservationConvention;
ObservationApplicationRunner(BeanFactory beanFactory, ApplicationRunner delegate, String beanName) { ObservationApplicationRunner(BeanFactory beanFactory, ApplicationRunner delegate, String beanName) {
this.beanFactory = beanFactory; this.beanFactory = beanFactory;
@@ -49,9 +51,8 @@ class ObservationApplicationRunner implements ApplicationRunner, Observation.Key
@Override @Override
public void run(ApplicationArguments args) throws Exception { public void run(ApplicationArguments args) throws Exception {
TaskObservationContext context = new TaskObservationContext(this.beanName); TaskObservationContext context = new TaskObservationContext(this.beanName);
Observation observation = TaskDocumentedObservation.TASK_RUNNER_OBSERVATION.observation(registry(), context) Observation observation = TaskDocumentedObservation.TASK_RUNNER_OBSERVATION.observation(registry(), context, this.taskObservationConvention, INSTANCE)
.contextualName(this.beanName) .contextualName(this.beanName);
.keyValuesProvider(this.keyValuesProvider);
try (Observation.Scope scope = observation.start().openScope()) { try (Observation.Scope scope = observation.start().openScope()) {
this.delegate.run(args); this.delegate.run(args);
} }
@@ -72,7 +73,7 @@ class ObservationApplicationRunner implements ApplicationRunner, Observation.Key
} }
@Override @Override
public void setKeyValuesProvider(TaskKeyValuesProvider keyValuesProvider) { public void setKeyValuesProvider(TaskObservationConvention keyValuesProvider) {
this.keyValuesProvider = keyValuesProvider; this.taskObservationConvention = keyValuesProvider;
} }
} }

View File

@@ -27,7 +27,9 @@ import org.springframework.boot.CommandLineRunner;
* *
* @author Marcin Grzejszczak * @author Marcin Grzejszczak
*/ */
class ObservationCommandLineRunner implements CommandLineRunner, Observation.KeyValuesProviderAware<TaskKeyValuesProvider> { class ObservationCommandLineRunner implements CommandLineRunner, Observation.KeyValuesProviderAware<TaskObservationConvention> {
private static final DefaultTaskObservationConvention INSTANCE = new DefaultTaskObservationConvention();
private final BeanFactory beanFactory; private final BeanFactory beanFactory;
@@ -37,7 +39,7 @@ class ObservationCommandLineRunner implements CommandLineRunner, Observation.Key
private ObservationRegistry registry; private ObservationRegistry registry;
private TaskKeyValuesProvider keyValuesProvider = new DefaultTaskKeyValuesProvider(); private TaskObservationConvention taskObservationConvention;
ObservationCommandLineRunner(BeanFactory beanFactory, CommandLineRunner delegate, String beanName) { ObservationCommandLineRunner(BeanFactory beanFactory, CommandLineRunner delegate, String beanName) {
this.beanFactory = beanFactory; this.beanFactory = beanFactory;
@@ -48,9 +50,8 @@ class ObservationCommandLineRunner implements CommandLineRunner, Observation.Key
@Override @Override
public void run(String... args) throws Exception { public void run(String... args) throws Exception {
TaskObservationContext context = new TaskObservationContext(this.beanName); TaskObservationContext context = new TaskObservationContext(this.beanName);
Observation observation = TaskDocumentedObservation.TASK_RUNNER_OBSERVATION.observation(registry(), context) Observation observation = TaskDocumentedObservation.TASK_RUNNER_OBSERVATION.observation(registry(), context, this.taskObservationConvention, INSTANCE)
.contextualName(this.beanName) .contextualName(this.beanName);
.keyValuesProvider(this.keyValuesProvider);
try (Observation.Scope scope = observation.start().openScope()) { try (Observation.Scope scope = observation.start().openScope()) {
this.delegate.run(args); this.delegate.run(args);
} }
@@ -71,7 +72,7 @@ class ObservationCommandLineRunner implements CommandLineRunner, Observation.Key
} }
@Override @Override
public void setKeyValuesProvider(TaskKeyValuesProvider keyValuesProvider) { public void setKeyValuesProvider(TaskObservationConvention keyValuesProvider) {
this.keyValuesProvider = keyValuesProvider; this.taskObservationConvention = keyValuesProvider;
} }
} }

View File

@@ -17,6 +17,7 @@
package org.springframework.cloud.task.configuration.observation; package org.springframework.cloud.task.configuration.observation;
import io.micrometer.common.docs.KeyName; import io.micrometer.common.docs.KeyName;
import io.micrometer.observation.Observation;
import io.micrometer.observation.docs.DocumentedObservation; import io.micrometer.observation.docs.DocumentedObservation;
enum TaskDocumentedObservation implements DocumentedObservation { enum TaskDocumentedObservation implements DocumentedObservation {
@@ -25,9 +26,10 @@ enum TaskDocumentedObservation implements DocumentedObservation {
* Observation created when a task runner is executed. * Observation created when a task runner is executed.
*/ */
TASK_RUNNER_OBSERVATION { TASK_RUNNER_OBSERVATION {
@Override @Override
public String getName() { public Class<? extends Observation.ObservationConvention<? extends Observation.Context>> getDefaultConvention() {
return "spring.cloud.task.runner"; return DefaultTaskObservationConvention.class;
} }
@Override @Override

View File

@@ -24,7 +24,7 @@ import io.micrometer.observation.Observation;
* @author Marcin Grzejszczak * @author Marcin Grzejszczak
* @since 3.0.0 * @since 3.0.0
*/ */
public interface TaskKeyValuesProvider extends Observation.KeyValuesProvider<TaskObservationContext> { public interface TaskObservationConvention extends Observation.ObservationConvention<TaskObservationContext> {
@Override @Override
default boolean supportsContext(Observation.Context context) { default boolean supportsContext(Observation.Context context) {