基线告警
该功能仅旗舰版支持
基线介绍
基线概念
基线能够提前预知基线上的任务无法按时完成的异常情况并提前预警。在任务数量多、调度依赖复杂的情况下,能够保障重要任务的顺利运行。
当任务被纳入基线管控后,该基线中的任务及其所有上游任务都会被自动监控。如下图所示,当任务D和任务E所属同一条基线,则D、E的上游任务A、B都会被纳入监控。C、F不属于D、E的依赖链路中,则C、F不会被纳入基线管控。
用户将重要任务加到基线上并设置承诺时间后,系统将根据任务运行情况计算基线任务的预计完成时间。当系统判断基线任务可能无法在承诺时间前完成,系统将发出告警
基线告警的工作模式
进行基线设置时,都需要配置承诺时间和预警余量,以保障基线能够根据要求及时发送预警。
承诺时间:任务运行成功的最晚期望时间点。可以为基线设置预警余量,则系统会将
承诺时间-预警余量
作为触发报警的预警时间,判断任务能否在预警时间前运行成功。预警时间:即
承诺时间-预警余量
。预警余量:预警余量反映的是用户对于延迟风险的容忍度,默认值为0,单位为分钟。
基线及其上游有效链路中的任意一个任务的实际开始运行时间 > (該任务的预计最晚开始时间 - 余量)or 任务实际成功运行结束的时间 >(該任务的预计最晚结束时间 - 余量),则到达到余量预警条件。
如下图,B下游设有基线1(任务C、D)承诺时间为6:00,基线2(任务F)承诺时间为5:00,根据每个任务近段时间运行成功平均所需时间可从最下游开始往上游推算每个任务的期望最晚开始运行时间。若将基线1的预警余量设置为30min,基线2的预警余量为60分钟。假设任务A在1点时执行失败进行重跑,任务A的最晚开始时间为1:50(从基线最底层往上推算)。则此时A的实际余量为50min > 设定基线1的预警余量30min,则基线1不会处于预警状态发送预警;A的实际余量为50min<设定的基线2的预警余量60分钟,则基线2会发送预警。若过了20min,A还未处理运行中状态,则基线1也会处于预警状态。若过了一段时间后,A任务运行失败,则基线1和基线2会再次处于预警状态,若配置了告警信息则会再次发送告警。
每出现一次状态变更会生成一次可能的告警
例如任务先超出基线的预警时间后再运行出错(取消、提交失败、运行失败、冻结),则会生成两次预警事件。
基线创建与管理
创建基线
在「运维中心->监控告警->基线管理」页面可以进行基线的创建和管理,新建基线时,需要填写以下信息,如图所示
基线名称:项目内唯一不可重名,除空格外不限字符。
基线类型:单批次适用天及天一类的任务,每天最多只生成一个基线实例,若某天某个任务的周期实例数超过1个,则只将該任务当天最晚实例纳入监控范围;多批次适用小时分钟等一天有多个实例的任务,每天可能会生成多个基线实例,要求基线内任务有完全一致的调度周期
责任人(必填):选择该条基线的维护责任人,可选择本项目下所有数据开发及项目管理员及以上的角色用户,默认为当前创建基线的用户。
任务(必填):当基线类型选择单批次时,当选中的任务某天的实例数>1个时,实际纳入当天基线实例监控的是該任务当天最晚一个实例。当基线类型选择多批次时,选中的所有任务需要有相同的调度周期,且多批次基线创建成功后,选中任务的调度周期将无法修改,如果需要修改调度周期,需要先将任务从基线中移除。
任务可以选择工作流任务,但无法选择工作流任务子节点
什么是有效上游任务?
有效上游任务是指所有可能会影响纳入基线管理的任务结果的产出时间的所有上游任务。
如下图,将D、E设为基线1的任务,则在基线1中A、B、D、E将被监控,C、F不会被监控。A、B就为D、E的有效上游。
批次:当基线类型选择“多批次”时,基线配置中会出现批次字段。用于展示选中任务的所有批次的计划时间及预计完成时间,并指定每个批次的承诺时间。
预计完成时间:将会对基线中选中任务进行产出时间的评估,可作为用户设置承诺时间的参考。
承诺时间:填写希望这条基线上的任务每天最晚成功运行结束的时间。多批次基线的承诺时间在「批次」中进行填写。
预警余量:填写余量预警时间。基线及其上游有效链路中的任意一个任务的实际开始运行时间 > (該任务的预计开始时间 - 余量)or 任务实际成功运行结束的时间 >(該任务的预计结束时间 - 余量),则到达到余量预警条件。多批次的预警余量对每个批次分别进行生效和计算
预计完成时间的计算方式
基线及其有效上游链路中:
每个任务的预计开始运行时间 = max(当前任务计划时间,直接上游任务1的预计运行结束时间,直接上游任务2的预计运行结束时间,...,直接上游任务n的预计运行结束时间) //不考虑等待资源的时间、任务失败重试或人工处理等计划外不可预测的时间
每个任务的预计运行时长 = 任务历史运行成功的平均运行时长 //任务所有历史运行实例的成功运行次数不足15次时取全部成功次数(包含补数据和周期实例的成功运行时长),超过15次取最近15次
每个任务的预计运行结束时间 = 任务的预计开始运行时间 + 任务的预计运行时长
按以上公式在基线所在有效的任务依赖链路中从上到下计算每个任务的预计运行结束时间,即可得到:
基线预计完成时间 = max(在此基线上的所有任务的预计运行结束时间) //若基线所在有效的任务依赖链路中存在至少一个上游任务历史成功运行次数为0
例如下图所示,C、E为基线1的任务,A、B、D为C的有效上游。
C任务的预计开始运行时间 = max(C任务计划时间,B任务的预计运行结束时间,D任务的预计运行结束时间)= 6:00
C任务的预计运行时长 = C任务历史运行成功的平均运行时长=30min
C任务的预计运行结束时间 = 6:00+30min = 6:30
E任务的预计运行结束时间 = 6:00+10min = 6:10
则基线1预计完成时间 = 任务C和任务E预计运行结束时间的最大值 = 任务C的预计运行结束时间 = 6:30
基线管理
在「运维中心->监控告警->基线管理」页面,可以进行基线的管理,如下图所示
除了查看基线信息外,还可对已创建的基线的「详情」进行查看,还可进行「编辑」「关闭」「删除」等操作。
详情:点击「详情」按钮,打开基线详情,如下图,可以查看基本信息和依赖视图。依赖视图展示基线上所有任务的依赖情况,默认展示当前基线任务及其上游一层,右键可以层层展开。
关闭:关闭基线后,第二天将不再生成实例,当天的基线实例不受影响
删除:删除基线后,从第二天开始不再产生基线实例,基线实例的状态变更为自动取消
基线实例
基线实例列表
在「运维中心->监控告警->基线实例」页面,可以进行基线实例的查看和管理,如下图
当基线在基线管理中开启时,基线上的所有任务当天有共计>=1个任务实例时在每天晚上24点生成基线实例,以对第二天的基线上的任务所产生的实例进行监控。
基线状态:有安全、预警、破线、定时未完成和其他5种状态
安全:
预计完成时间<预警时间
。预警:
预警时间<预计完成时间<承诺时间
。破线:
预计完成时间>承诺时间
。定时未完成:到达基线所设置的承诺时间,基线上的实例未全部成功。
其他:若存在无关联实例、实例取消或冻结、实例无法计算预计完成时间
在基线中当前几个任务计算出预计完成时间,此时基线是安全/预警/破线状态,下游任务因为无法判断出预计完成(此前该任务没有成功运行过)时间,此时基线状态会变为“其他”状态
如果基线设置余量为0,则基线没有预警状态,只有安全、破线、其他、定时未完成状态
完成状态:标注基线当前的完成状态和预计完成时间(或实际完成时间)
预警和破线状态下基线任务预计完成时间计算方式:在链路中从上到下根据实例当前状态计算每个实例的预计开始运行时间、预计剩余运行时长及预计运行结束时间。
如下图C已完成,D正在运行,A、B、E均未运行,则只需要计算ABDE链路的预计完成时间。
基线时间:展示预警余量和承诺时间
当前余量:对于未完成的基线实例:承诺时间 - 当前时间(单位分钟);对于已完成的基线实例:显示为“-”
基线实例详情
点击列表中实例的「基线名称」,打开基线的基本信息,主要有三部分组成:基本信息、基线任务、历史完成曲线,如下图所示
当前阻塞任务:列出造成当前基线处于预警、破线和其他状态的所有任务的名称、状态、责任人、阻塞原因等信息
历史完成曲线:展示近15天的基线任务完成时间
基线告警
基线告警规则创建
在「运维中心->监控告警->告警规则」中可以创建基线告警规则,如下图所示
触发方式:当告警对象选择基线时,触发方式支持完成、预警、破线、出错、定时未完成等选项。
完成:指基线上的实例运行成功;
预警:基线上的实例预计完成时间已达到余量预警条件;
破线:基线上的实例预计无法在承诺时间完成;
出错:指基线所在有效实例链路上存在任务运行失败、提交失败、取消、冻结的情况;
定时未完成:基线上的实例实际没有在承诺时间完成
告警行为配置,可以参考监控告警帮助文档。需要注意的是,当用户从项目中移除并进行资源交接时,如果被移除用户原是告警接受人,需将告警规则进行交接。
基线告警规则创建成功后,会在告警规则列表进行展示
基线告警信息
在「运维中心->监控告警->告警信息」中可以查看历史基线告警信息,如下图所示,基线告警信息根据触发方式等不同将会发送不同的基线告警内容,包含基线名称、项目名称、租户名称、基线任务范围、计划时间、承诺时间、开始时间、结束时间、运行时长、当前状态、责任人、状态相关任务等字段。