весенняя партия: оповещение с помощью графаны и прометея, если задание не удалось выполнить за последние xx минут

Я использую пружинный блок (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).

Например, по названию метрики spring_batch_job я могу видеть, как часто выполнялось задание, его статус и продолжительность.

Я хочу отслеживать эту метрику с помощью grafana и prometheus и предупреждать, если задание не удалось выполнить за последние xx минут.

Если пакетное приложение Spring работает как служба, кажется, что оно суммирует все показатели, пока служба не будет остановлена. Например, если задание было запущено 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]


person denfri.dev    schedule 24.04.2020    source источник


Ответы (1)


Я не знаком с Prometheus QL, но постараюсь помочь.

Что вы можете сделать, так это вычислить разницу этого счетчика между последним и предыдущим часами. Если вы видите увеличение количества неудачных экземпляров, значит, как минимум один отказал, и вы можете подать предупреждение. В противном случае ни одно задание не было неудачным за предыдущий час.

Prometheus предоставляет функцию увеличения, которая разработана специально для этого. Таким образом, вы сможете ответить на свой вопрос и поднять предупреждение, когда:

increase(spring_batch_job_seconds_count{name="mainJob",status="FAILED"}[15m]) > 0

Как я уже сказал, я не эксперт в Prometheus, поэтому позволю вам проверить синтаксис. Но это идея.

person Mahmoud Ben Hassine    schedule 26.04.2020