【发布时间】:2020-08-07 20:30:59
【问题描述】:
我正在使用弹簧批处理 (4.2.2.RELEASE) 和弹簧执行器 (2.2.6 RELEASE)。从 4.2 版本开始,spring batch 提供了对基于 micrometer (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]
【问题讨论】:
标签: spring-boot spring-batch prometheus grafana spring-micrometer