对于最新稳定版本,请使用Spring Batch Documentation 6.0.0spring-doc.cadn.net.cn

监测与指标

自4.2版本起,Spring Batch 支持批处理监控和指标 基于Micrometer。本节描述 哪些指标是开箱即用的,以及如何贡献自定义指标。spring-doc.cadn.net.cn

内置指标

度量收集不需要特定的配置。所有指标均提供 该框架已在Micrometer全球注册处注册spring.batch前缀。下表详细解释了所有指标:spring-doc.cadn.net.cn

公制名称spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

描述spring-doc.cadn.net.cn

标签spring-doc.cadn.net.cn

spring.batch.job(spring.batch.job)spring-doc.cadn.net.cn

定时器spring-doc.cadn.net.cn

作业执行时长spring-doc.cadn.net.cn

名称,地位spring-doc.cadn.net.cn

Spring.batch.job.activespring-doc.cadn.net.cn

LONG_TASK_TIMERspring-doc.cadn.net.cn

目前在职工作spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

spring.batch.stepspring-doc.cadn.net.cn

定时器spring-doc.cadn.net.cn

步骤执行时长spring-doc.cadn.net.cn

名称,job.name,地位spring-doc.cadn.net.cn

spring.batch.step.activespring-doc.cadn.net.cn

LONG_TASK_TIMERspring-doc.cadn.net.cn

当前活跃的步道spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

Spring.batch.item.readspring-doc.cadn.net.cn

定时器spring-doc.cadn.net.cn

题目阅读时长spring-doc.cadn.net.cn

job.name,step.name,地位spring-doc.cadn.net.cn

Spring.batch.item.processspring-doc.cadn.net.cn

定时器spring-doc.cadn.net.cn

项目处理时间spring-doc.cadn.net.cn

job.name,step.name,地位spring-doc.cadn.net.cn

spring.batch.chunk.writespring-doc.cadn.net.cn

定时器spring-doc.cadn.net.cn

区块写入的时长spring-doc.cadn.net.cn

job.name,step.name,地位spring-doc.cadn.net.cn

地位标签可以是以下两种形式成功失败.

自定义指标

如果你想在自定义组件中使用自己的指标,我们推荐使用 直接使用微米API。以下是如何计时 的示例任务:spring-doc.cadn.net.cn

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 指标的功能。这应该是 在Micrometer那边完成。因为 Spring Batch 将指标存储在全球范围内 带有spring.batch前缀,你可以配置 Micrometer 可通过以下片段忽略或否认批次指标:spring-doc.cadn.net.cn

Metrics.globalRegistry.config().meterFilter(MeterFilter.denyNameStartsWith("spring.batch"))

更多细节请参见Micrometer的参考文档spring-doc.cadn.net.cn