Я использую подпружиненную партию (4.2.2.RELEASE) вместе с пружинным приводом (2.2.6 RELEASE). Начиная с версии 4.2, Spring Batch предоставляет поддержку мониторинга партий и показателей на основе микрометра (https://docs.spring.io/spring-batch/docs/4.2.x/reference/html/monitoring-and-metrics.html).
Например, я могу видеть с именем metri c * spring_batch_job
как часто выполнялось задание, его статус и продолжительность.
Я хочу отслеживать этот показатель c с помощью графаны и прометея и оповещать, если задание не выполнено в последние xx минуты.
Если приложение Spring Batch работает как служба, кажется, что оно суммирует все показатели, пока служба не будет остановлена. Например, если задание было запущено 12 раз за последний час, выходные данные метрик могут быть следующими:
spring_batch_job_seconds_count{name="mainJob",status="COMPLETED",} 10.0
spring_batch_job_seconds_sum{name="mainJob",status="COMPLETED",} 354.354538083
spring_batch_job_seconds_count{name="mainJob",status="FAILED",} 2.0
spring_batch_job_seconds_sum{name="mainJob",status="FAILED",} 0.880157862
Таким образом, два экземпляра mainJob
завершились неудачно. Предполагается, что в течение следующего часа все 12 заданий будут успешными, вывод метрик будет следующим:
spring_batch_job_seconds_count{name="mainJob",status="COMPLETED",} 22.0
spring_batch_job_seconds_sum{name="mainJob",status="COMPLETED",} 708.704538083
spring_batch_job_seconds_count{name="mainJob",status="FAILED",} 2.0
spring_batch_job_seconds_sum{name="mainJob",status="FAILED",} 0.880157862
Как я могу проверить, провалилось ли задание за последние XX минут? Поскольку следующее выражение будет по-прежнему возвращать два сбойных задания: spring_batch_job_seconds_count{status="FAILED"}[15m]