此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Batch 文档 5.2.2! |
监控和指标
从 4.2 版本开始,Spring Batch 提供了对批量监控和指标的支持 基于千分尺。本节介绍 哪些指标是现成的,以及如何贡献自定义指标。
内置指标
指标收集不需要任何特定配置。提供的所有指标
在 Micrometer 的全球注册表中注册spring.batch
前缀。下表详细说明了所有指标:
指标名称 |
类型 |
描述 |
标签 |
|
|
作业执行的持续时间 |
|
|
|
当前活动作业 |
|
|
|
步骤执行的持续时间 |
|
|
|
当前活动步骤 |
|
|
|
项目阅读持续时间 |
|
|
|
项目处理的持续时间 |
|
|
|
块写入的持续时间 |
|
这status 标签可以是SUCCESS 或FAILURE . |
自定义指标
如果您想在自定义组件中使用自己的指标,我们建议使用
Micrometer API 直接。下面是一个示例,说明如何对Tasklet
:
import io.micrometer.core.instrument.Metrics;
import io.micrometer.core.instrument.Timer;
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 {
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) {
Timer.Sample sample = Timer.start(Metrics.globalRegistry);
String status = "success";
try {
// do some work
} catch (Exception e) {
// handle exception
status = "failure";
} finally {
sample.stop(Timer.builder("my.tasklet.timer")
.description("Duration of MyTimedTasklet")
.tag("status", status)
.register(Metrics.globalRegistry));
}
return RepeatStatus.FINISHED;
}
}
禁用指标
指标收集是一个类似于日志记录的问题。禁用日志通常是
通过配置日志记录库来完成,这对于指标没有什么不同。
Spring Batch 中没有禁用 Micrometer 指标的功能。这应该
在千分尺一侧完成。由于 Spring Batch 将指标存储在全局
Micrometer 的注册表,其中spring.batch
prefix,您可以配置
micrometer 忽略或拒绝具有以下代码段的批处理指标:
Metrics.globalRegistry.config().meterFilter(MeterFilter.denyNameStartsWith("spring.batch"))
有关更多详细信息,请参阅 Micrometer 的参考文档。