如何实现shell触发的Spring Batch任务运行状态监控看板?
Spring Batch 任务监控看板落地方案
第一步:梳理Spring Batch元数据表结构,确认采集指标
Spring Batch 自带的元数据表已经存储了任务全链路执行数据,无需额外做业务埋点,优先锁定核心表和字段:
- BATCH_JOB_INSTANCE:存储任务实例基础信息,包含JOB_NAME、JOB_KEY等字段
- BATCH_JOB_EXECUTION:存储单次任务执行维度数据,核心字段包括STATUS(运行状态:COMPLETED、FAILED、RUNNING、STOPPED等)、START_TIME、END_TIME、EXIT_CODE、EXIT_MESSAGE
- BATCH_STEP_EXECUTION:存储单步骤执行详情,可用于任务失败后的根因定位
- 针对shell脚本触发的任务,建议在启动参数中新增
triggerType=shell标识,存入BATCH_JOB_EXECUTION_PARAMS表,方便后续过滤数据
第二步:封装REST API接口拉取数据
直接基于Spring Boot封装接口即可,无需引入额外第三方组件:
- 用JdbcTemplate或者MyBatis编写SQL查询元数据表,不需要侵入现有Spring Batch任务的业务代码
- 按使用场景拆分接口:
- 概览接口:返回运行中、成功、失败任务数量,今日执行总次数等大盘统计数据
- 任务列表接口:支持按状态、时间范围、任务名称筛选,返回单次任务执行基础信息
- 详情接口:返回单个任务执行的步骤列表、异常信息、入参等明细数据
- 可添加1分钟级别的缓存逻辑,避免频繁查询元数据表影响原有业务性能
第三步:前端可视化看板开发
选择团队熟悉的UI框架即可,常规技术栈可以快速落地:
- 基础框架:Vue/React都可满足需求,无需过度选型
- 可视化组件:用ECharts即可覆盖常用展示需求:
- 大盘数字卡:展示实时运行中任务数、今日执行成功率、平均执行时长
- 折线图:按小时/天维度展示任务执行次数趋势
- 饼图:展示任务状态分布占比
- 列表页:展示所有任务执行记录,支持搜索、筛选,失败任务默认标红高亮
- 可选实用功能:
- 自动刷新:可配置10秒/30秒/1分钟的自动刷新周期,无需手动刷新页面
- 异常提示:页面存在失败任务时弹出醒目提示,也可对接内部告警渠道
- 日志关联:任务失败时可直接跳转查看对应shell脚本执行日志或Spring Batch业务日志
第四步:对齐shell触发链路的校验逻辑
因为任务由shell脚本触发,需要额外补全监控盲区:
- shell脚本启动Spring Batch任务时,将当前进程ID、触发时间写入自定义监控表,或者直接存入Spring Batch执行参数
- 接口返回数据时,对比shell触发记录和Spring Batch执行记录,避免出现shell调用失败、任务未启动的场景(该场景下Spring Batch元数据表无记录,会出现监控遗漏)
第五步:测试上线
- 先在测试环境模拟各类场景:任务执行成功、失败、中途终止、长时间运行,验证看板数据的准确性
- 上线初期可添加定时校验脚本,核对看板数据和实际任务执行情况,避免出现数据不一致问题
内容的提问来源于stack exchange,提问作者vivek manukonda
相关产品推荐
相关产品推荐

