监控和指标

监控和指标

从版本 4.2 开始,Spring Batch 提供了对批处理监控和指标的支持 基于 Micrometer。本节介绍 哪些指标是开箱即用的,以及如何提供自定义指标。spring-doc.cn

内置指标

指标采集不需要任何特定配置。提供所有指标 在 Micrometer 的全局注册表中以前缀注册。下表详细介绍了所有指标:spring.batchspring-doc.cn

指标名称spring-doc.cn

类型spring-doc.cn

描述spring-doc.cn

标签spring-doc.cn

spring.batch.jobspring-doc.cn

TIMERspring-doc.cn

任务执行持续时间spring-doc.cn

name,statusspring-doc.cn

spring.batch.job.activespring-doc.cn

LONG_TASK_TIMERspring-doc.cn

当前活动的作业spring-doc.cn

namespring-doc.cn

spring.batch.stepspring-doc.cn

TIMERspring-doc.cn

步骤执行的持续时间spring-doc.cn

name, ,job.namestatusspring-doc.cn

spring.batch.item.readspring-doc.cn

TIMERspring-doc.cn

项目读取的持续时间spring-doc.cn

job.name, ,step.namestatusspring-doc.cn

spring.batch.item.processspring-doc.cn

TIMERspring-doc.cn

商品处理的持续时间spring-doc.cn

job.name, ,step.namestatusspring-doc.cn

spring.batch.chunk.writespring-doc.cn

TIMERspring-doc.cn

块写入的持续时间spring-doc.cn

job.name, ,step.namestatusspring-doc.cn

标记可以是 或 。statusSUCCESSFAILURE

自定义指标

如果您想在自定义组件中使用自己的指标,我们建议使用 Micrometer API 直接使用。以下是如何为 :Taskletspring-doc.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;
	}
}

禁用指标

指标收集是一个类似于日志记录的问题。禁用日志通常是 通过配置 logging 库完成,这对 metrics 没有什么不同。 Spring Batch 中没有禁用 micrometer 指标的功能,这应该 在 micrometer 一侧完成。由于 Spring Batch 将指标存储在全局 带有前缀的 micrometer 的注册表,可以配置 micrometer 忽略/拒绝批处理指标,使用以下代码段:spring.batchspring-doc.cn

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

有关详细信息,请参阅 micrometer 的参考文档spring-doc.cn