Autosys box上次运行未结束触发下次调度时如何发送邮件通知?
实现方案
核心逻辑是新增一个独立的告警作业,无需修改原有box作业的配置,步骤如下:
- 告警作业的调度时间和原box的8点调度时间完全一致
- 给告警作业配置运行条件:判定7点启动的原box实例仍在运行,且8点的原box实例未被触发
- 告警作业的执行逻辑直接发送指定内容的邮件给业务侧联系人
JIL配置示例
/* 告警作业:原BOX 8点调度未执行告警 */ insert_job: ALERT_<原BOX作业名>_8AM_SKIP job_type: c command: echo "告警:今日8点调度的<业务作业名>批次未执行,原因是7点启动的前序作业仍在运行中,请相关人员关注作业运行进度。" | mailx -s "【作业调度告警】<业务作业名>8点批次未触发" -r alert@yourcompany.com business_team@yourcompany.com machine: <Autosys客户端执行节点名> owner: <Autosys作业执行账号> permission: gx,ge start_times: "08:00" days_of_week: all condition: running(<原BOX作业名>, -1) & status(<原BOX作业名>, 0) = NO_RUN alarm_if_fail: 1 description: 告警作业:当原BOX 7点实例未结束导致8点实例未触发时发送邮件通知
参数说明
running(<原BOX作业名>, -1):判断上一个调度周期(即每日7点启动的实例)的原box作业仍处于运行状态,-1代表取上一周期的作业实例status(<原BOX作业名>, 0) = NO_RUN:判断当前调度周期(即每日8点的实例)的原box作业未被触发运行,0代表取当前周期的作业实例- 如果你用的是Windows环境的Autosys,把command替换为Windows下的邮件发送命令即可,比如调用powershell的Send-MailMessage指令
- 邮件的收件人、主题、正文内容可以根据业务需求自行调整
内容的提问来源于stack exchange,提问作者Ankit Mongia
相关产品推荐
相关产品推荐

