监控和指标
本站( springdoc.cn )中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。 |
自 4.2 版起,Spring Batch 基于 Micrometer 提供对 batch 监控和指标的支持。本节将介绍开箱即用的指标,以及如何提供自定义指标。
内置指标
指标收集不需要任何特定配置。框架提供的所有指标都以 spring.batch
前缀在 Micrometer 全局注册表 中注册。下表详细介绍了所有指标:
指标名称 |
Type |
说明 |
标签 |
|
|
job 执行时间 |
|
|
|
当前活跃的 job |
|
|
|
step 执行时间 |
|
|
|
当前活跃的 step |
|
|
|
item 读取时间 |
|
|
|
item 处理时间 |
|
|
|
chunk(分块)写入时间 |
|
status tag 可以是 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;
}
}
禁用指标
指标收集与日志记录的关注点类似。禁用日志通常是通过配置日志库来完成的,这一点对于指标也是一样。Spring Batch 没有禁用 Micrometer 指标的功能。这应该在 Micrometer 方面完成。由于 Spring Batch 在 Micrometer 的全局注册表中存储了以 spring.batch
为前缀的指标,因此可以使用以下代码段配置 Micrometer 忽略或拒绝 batch 指标:
Metrics.globalRegistry.config().meterFilter(MeterFilter.denyNameStartsWith("spring.batch"))
详情请参见 Micrometer 的 参考文档。
追踪
从第 5 版开始,Spring Batch 可通过 Micrometer 的 Observation
API 提供追踪功能。默认情况下,使用 @EnableBatchProcessing
时会启用追踪功能。Spring Batch 会为每个 job 的执行创建 trace (追踪),并为每个 step 的执行创建 span。
如果不使用 EnableBatchProcessing
,则需要在 application context 中注册 BatchObservabilityBeanPostProcessor
,它将在 job 和 step bean 中自动设置 Micrometer
的可观察性。