千米支持度
监测与指标
自4.2版本起,Spring Batch 支持批处理监控和指标 基于Micrometer。本节描述 哪些指标是开箱即用的,以及如何贡献自定义指标。
内置指标
指标收集默认被禁用。要启用它,你需要定义一个微米ObservationRegistry在你的应用环境中。通常,你需要定义
使用哪个ObservationHandler。以下示例展示了如何注册默认计量观察处理程序它将以 a 格式存储指标MeterRegistry(例如,普罗米修斯登记册):
@Bean
public ObservationRegistry observationRegistry(MeterRegistry meterRegistry) {
ObservationRegistry observationRegistry = ObservationRegistry.create();
observationRegistry.observationConfig()
.observationHandler(new DefaultMeterObservationHandler(meterRegistry));
return observationRegistry;
}
Spring Batch的特定指标注册于spring.batch前缀。如下
表格详细解释了所有指标:
公制名称 |
类型 |
描述 |
标签 |
|
|
作业执行时长 |
|
|
|
目前在职 |
|
|
|
步骤执行时长 |
|
|
|
当前活跃的步道 |
|
|
|
题目阅读时长 |
|
|
|
项目处理时间 |
|
|
|
区块写入的时长 |
|
|
|
作业启动次数 |
无 |
这地位作业和步骤的标签等同于退出状态。用于项目阅读和处理
并写下了地位标签可以是以下两种形式成功或失败. |
自定义指标
如果你想在自定义组件中使用自己的指标,我们推荐使用
直接使用微米API。以下是如何计时 的示例任务:
import io.micrometer.observation.Observation;
import io.micrometer.observation.ObservationRegistry;
import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
public class MyTimedTasklet implements Tasklet {
private ObservationRegistry observationRegistry;
public MyTimedTasklet(ObservationRegistry observationRegistry) {
this.observationRegistry = observationRegistry;
}
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) {
Observation observation = Observation.start("my.tasklet.step", this.observationRegistry);
try (Observation.Scope scope = observation.openScope()) {
// do some work
return RepeatStatus.FINISHED;
} catch (Exception e) {
// handle exception
observation.error(exception);
} finally {
observation.stop();
}
}
}
描图
从版本5开始,Spring Batch 支持通过Micrometer进行追踪观察应用程序接口。默认情况下,追踪功能是被禁用的。
要启用它,你需要定义一个ObservationRegistryBEAN 配置为观察处理器支持追踪,
如追踪意识计量观察处理器:
@Bean
public ObservationRegistry observationRegistry(MeterRegistry meterRegistry, Tracer tracer) {
DefaultMeterObservationHandler observationHandler = new DefaultMeterObservationHandler(meterRegistry);
ObservationRegistry observationRegistry = ObservationRegistry.create();
observationRegistry.observationConfig()
.observationHandler(new TracingAwareMeterObservationHandler<>(observationHandler, tracer));
return observationRegistry;
}
有了这些,Spring Batch 会为每个作业执行创建一个跟踪,并为每个步骤执行创建一个跨度。
如果你不使用。EnableBatchProcessing或DefaultBatchConfiguration,你需要注册一个批量可观测性BeanPostProcessor在你的应用上下文中,该系统会自动设置Micrometer的观测值
可观察批处理工件中的注册表。