WIP
This commit is contained in:
1
pom.xml
1
pom.xml
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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) {
|
||||||
Reference in New Issue
Block a user