監視とメトリクス
バージョン 4.2 以降、Spring Batch は Micrometer (英語) に基づいたバッチ監視およびメトリクスのサポートを提供します。このセクションでは、すぐに使用できるメトリクスと、カスタムメトリクスの提供方法について説明します。
組み込みメトリクス
メトリクスコレクションには、特定の構成は必要ありません。フレームワークによって提供されるすべてのメトリクスは、spring.batch
プレフィックスで Micrometer のグローバルレジストリ (英語) に登録されます。次の表は、すべてのメトリクスを詳細に説明しています。
メトリクス名 | 型 | 説明 | タグ |
|
| ジョブ実行の期間 |
|
|
| 現在アクティブなジョブ |
|
|
| ステップ実行の期間 |
|
|
| 現在アクティブなステップ |
|
|
| アイテムの読み込み時間 |
|
|
| アイテム処理の期間 |
|
|
| チャンク書き込みの期間 |
|
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 のリファレンスドキュメント (英語) を参照してください。