是否有可用于捕获 Spring Batch 微观指标的示例代码?
Is there an sample code available to capture Spring Batch Micro Metrics?
正在开发一个 spring 启动批处理应用程序,想知道是否有关于如何获取 spring 批处理 document 中讨论的微指标的示例代码?
我正在寻找每次执行获取这些详细信息的方法。此外,由于我 运行 使用 cron 任务计划的应用程序,我们能否在每次执行时分离此数据?
找到解决方案
无需编码,一应俱全
在 pom 中包含执行器依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在 属性 文件中添加此行(而不是 * 您可以添加逗号分隔和安全性)refrence
management.endpoints.web.exposure.include=*
如果您的应用程序 运行 在端口 8080
http://localhost:8080/actuator/metrics/spring.batch.job
将提供工作统计信息。您可以查询任何其他指标参数。 Reference
您可以通过
计算玉米任务计划中所有执行的指标
首先 创建自定义指标端点。
@Component
@Endpoint(id = "spring.batch.executions")
public class BatchMetricEndpoint {
@Autowired
BatchAllJobsMetricContext batchAllJobsMetricContext;
@ReadOperation
public Map<String, BatchPerJobMetricContext> features() {
return batchAllJobsMetricContext.getAll();
}
}
第二
执行后进入本地指标端点。
@Component
public class BatchJobListener implements JobExecutionListener {
@Autowired
private MetricsEndpoint metricsEndpoint;
@Autowired
BatchAllJobsMetricContext batchAllJobsMetricContext;
@Autowired
BatchPerJobMetricContext batchPerJobMetricContext;
@Override
public void beforeJob(JobExecution jobExecution) {
}
@Override
public void afterJob(JobExecution jobExecution) {
MetricsEndpoint.MetricResponse metricResponse = metricsEndpoint.metric("spring.batch.job",null);
String key = jobExecution.getJobParameters().getString("jobId");
String execution = "Execution "+jobExecution.getJobParameters().getString("executionCout");
if(batchAllJobsMetricContext.hasKey(key)){
batchAllJobsMetricContext.get(key).put(execution,metricResponse);
}else{
batchPerJobMetricContext.put(execution,metricResponse);
batchAllJobsMetricContext.put(key,batchPerJobMetricContext);
}
}
}
第三
利用本地指标聚合数据。
请注意,这种每次迭代保存指标的方式会占用大量内存,您希望保留一些限制并将此数据推送到时间序列数据源。
正在开发一个 spring 启动批处理应用程序,想知道是否有关于如何获取 spring 批处理 document 中讨论的微指标的示例代码?
我正在寻找每次执行获取这些详细信息的方法。此外,由于我 运行 使用 cron 任务计划的应用程序,我们能否在每次执行时分离此数据?
找到解决方案
无需编码,一应俱全
在 pom 中包含执行器依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在 属性 文件中添加此行(而不是 * 您可以添加逗号分隔和安全性)refrence
management.endpoints.web.exposure.include=*
如果您的应用程序 运行 在端口 8080
http://localhost:8080/actuator/metrics/spring.batch.job
将提供工作统计信息。您可以查询任何其他指标参数。 Reference
您可以通过
计算玉米任务计划中所有执行的指标首先 创建自定义指标端点。
@Component
@Endpoint(id = "spring.batch.executions")
public class BatchMetricEndpoint {
@Autowired
BatchAllJobsMetricContext batchAllJobsMetricContext;
@ReadOperation
public Map<String, BatchPerJobMetricContext> features() {
return batchAllJobsMetricContext.getAll();
}
}
第二
执行后进入本地指标端点。
@Component
public class BatchJobListener implements JobExecutionListener {
@Autowired
private MetricsEndpoint metricsEndpoint;
@Autowired
BatchAllJobsMetricContext batchAllJobsMetricContext;
@Autowired
BatchPerJobMetricContext batchPerJobMetricContext;
@Override
public void beforeJob(JobExecution jobExecution) {
}
@Override
public void afterJob(JobExecution jobExecution) {
MetricsEndpoint.MetricResponse metricResponse = metricsEndpoint.metric("spring.batch.job",null);
String key = jobExecution.getJobParameters().getString("jobId");
String execution = "Execution "+jobExecution.getJobParameters().getString("executionCout");
if(batchAllJobsMetricContext.hasKey(key)){
batchAllJobsMetricContext.get(key).put(execution,metricResponse);
}else{
batchPerJobMetricContext.put(execution,metricResponse);
batchAllJobsMetricContext.put(key,batchPerJobMetricContext);
}
}
}
第三
利用本地指标聚合数据。
请注意,这种每次迭代保存指标的方式会占用大量内存,您希望保留一些限制并将此数据推送到时间序列数据源。