监控和指标
监控和指标
从版本 4.2 开始,Spring Batch 提供了对批处理监控和指标的支持 基于 Micrometer。本节介绍 哪些指标是开箱即用的,以及如何提供自定义指标。
内置指标
指标采集不需要任何特定配置。提供所有指标
在 Micrometer 的全局注册表中以前缀注册。下表详细介绍了所有指标:spring.batch
指标名称 |
类型 |
描述 |
标签 |
|
|
任务执行持续时间 |
|
|
|
当前活动的作业 |
|
|
|
步骤执行的持续时间 |
|
|
|
当前活动步骤 |
|
|
|
项目读取的持续时间 |
|
|
|
商品处理的持续时间 |
|
|
|
块写入的持续时间 |
|
标记可以是 或 。status SUCCESS FAILURE |
自定义指标
如果您想在自定义组件中使用自己的指标,我们建议使用
Micrometer API 直接使用。以下是如何为 :Tasklet
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;
}
}
禁用量度
指标收集是一个类似于日志记录的问题。禁用日志通常是
通过配置 Logging Library 来完成,这对于 Metrics 没有什么不同。
Spring Batch 中没有禁用 Micrometer 指标的功能。这应该
在 Micrometer 这边完成。由于 Spring Batch 将指标存储在全局
registry 的 micrometer 的 registry 中,你可以配置
micrometer 忽略或拒绝批处理指标,代码片段如下:spring.batch
Metrics.globalRegistry.config().meterFilter(MeterFilter.denyNameStartsWith("spring.batch"))
有关更多详细信息,请参阅 Micrometer 的参考文档。
描图
从版本 5 开始, Spring Batch 通过 Micrometer 的 API 提供跟踪。默认情况下,跟踪处于启用状态
使用 .Spring Batch 将为每个作业执行创建一个跟踪,并为每个作业执行创建一个 span
Step 执行。Observation
@EnableBatchProcessing
如果您不使用 ,则需要在您的
application context,它将自动在你的 jobs 和 steps bean 中设置 Micrometer 的可观察性。EnableBatchProcessing
BatchObservabilityBeanPostProcessor