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

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

View File

@@ -25,10 +25,15 @@ import io.micrometer.observation.Observation;
* @author Marcin Grzejszczak
* @since 3.0.0
*/
public class DefaultTaskKeyValuesProvider implements TaskKeyValuesProvider {
public class DefaultTaskObservationConvention implements TaskObservationConvention {
@Override
public KeyValues getLowCardinalityKeyValues(TaskObservationContext context) {
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
*/
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;
@@ -38,7 +40,7 @@ class ObservationApplicationRunner implements ApplicationRunner, Observation.Key
private ObservationRegistry registry;
private TaskKeyValuesProvider keyValuesProvider = new DefaultTaskKeyValuesProvider();
private TaskObservationConvention taskObservationConvention;
ObservationApplicationRunner(BeanFactory beanFactory, ApplicationRunner delegate, String beanName) {
this.beanFactory = beanFactory;
@@ -49,9 +51,8 @@ class ObservationApplicationRunner implements ApplicationRunner, Observation.Key
@Override
public void run(ApplicationArguments args) throws Exception {
TaskObservationContext context = new TaskObservationContext(this.beanName);
Observation observation = TaskDocumentedObservation.TASK_RUNNER_OBSERVATION.observation(registry(), context)
.contextualName(this.beanName)
.keyValuesProvider(this.keyValuesProvider);
Observation observation = TaskDocumentedObservation.TASK_RUNNER_OBSERVATION.observation(registry(), context, this.taskObservationConvention, INSTANCE)
.contextualName(this.beanName);
try (Observation.Scope scope = observation.start().openScope()) {
this.delegate.run(args);
}
@@ -72,7 +73,7 @@ class ObservationApplicationRunner implements ApplicationRunner, Observation.Key
}
@Override
public void setKeyValuesProvider(TaskKeyValuesProvider keyValuesProvider) {
this.keyValuesProvider = keyValuesProvider;
public void setKeyValuesProvider(TaskObservationConvention keyValuesProvider) {
this.taskObservationConvention = keyValuesProvider;
}
}

View File

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

View File

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

View File

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