监控和指标

从版本 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.jobspring-doc.cadn.net.cn

TIMERspring-doc.cadn.net.cn

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

name,statusspring-doc.cadn.net.cn

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

LONG_TASK_TIMERspring-doc.cadn.net.cn

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

namespring-doc.cadn.net.cn

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

TIMERspring-doc.cadn.net.cn

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

name,job.name,statusspring-doc.cadn.net.cn

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

LONG_TASK_TIMERspring-doc.cadn.net.cn

当前活动步骤spring-doc.cadn.net.cn

namespring-doc.cadn.net.cn

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

TIMERspring-doc.cadn.net.cn

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

job.name,step.name,statusspring-doc.cadn.net.cn

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

TIMERspring-doc.cadn.net.cn

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

job.name,step.name,statusspring-doc.cadn.net.cn

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

TIMERspring-doc.cadn.net.cn

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

job.name,step.name,statusspring-doc.cadn.net.cn

statustag 可以是SUCCESSFAILURE.

自定义指标

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

Disabling Metrics

Metrics collection is a concern similar to logging. Disabling logs is typically done by configuring the logging library, and this is no different for metrics. There is no feature in Spring Batch to disable Micrometer’s metrics. This should be done on Micrometer’s side. Since Spring Batch stores metrics in the global registry of Micrometer with the spring.batch prefix, you can configure micrometer to ignore or deny batch metrics with the following snippet:spring-doc.cadn.net.cn

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

See Micrometer’s reference documentation for more details.spring-doc.cadn.net.cn