監控與指標
自 4.2 版本起,Spring Batch 開始支援基於 Micrometer 的批次監控與指標。本節說明框架預設提供的指標,以及如何貢獻自訂指標。
內建指標
指標收集不需要任何特定設定。框架提供的所有指標都已在 Micrometer 的全域註冊表 中以 spring.batch
前綴註冊。下表詳細說明了所有指標
指標名稱 |
類型 |
描述 |
標籤 |
|
|
Job 執行的持續時間 |
|
|
|
目前活動中的 Job |
|
|
|
Step 執行的持續時間 |
|
|
|
目前活動中的 Step |
|
|
|
Item 讀取的持續時間 |
|
|
|
Item 處理的持續時間 |
|
|
|
Chunk 寫入的持續時間 |
|
status 標籤可以是 SUCCESS 或 FAILURE 。 |
自訂指標
如果您想在自訂組件中使用自己的指標,我們建議直接使用 Micrometer API。以下是如何計時 Tasklet
的範例
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 將指標儲存在 Micrometer 的全域註冊表中,並以 spring.batch
前綴開頭,因此您可以設定 micrometer 以忽略或拒絕批次指標,如下列程式碼片段所示
Metrics.globalRegistry.config().meterFilter(MeterFilter.denyNameStartsWith("spring.batch"))
請參閱 Micrometer 的參考文件以取得更多詳細資訊。