0、背景
作为数据开发人员,我们日常工作的一部分就是夜间值班。”夜间值班“对于没有实际工作经验的同学来说可能比较陌生。
所谓夜间值班,主要是为了保证数据可以在我们的对外承诺时间前产出。而由于日常生产任务依赖关系异常复杂,上游任务的任何延迟、失败都会影响到我们的数据能否在预期时间内产出,因此就有了基线监控。智能基线可以及时捕捉到任何影响基线任务按时产出的事件,并提前进行预警,保障复杂场景下重要数据也可以在预期时间内顺利产出。
一、基线是什么
基线可以形象的理解为在高速公路上的应急车道。用户将重要的任务添加到基线上后,相对于普通的任务,在基线上的任务具备更高的运行优先级,并且可以预先设置保障产出时间,系统将根据任务运行情况计算基线任务的预计完成时间。当系统判断基线任务可能无法在承诺时间前完成,系统将发出告警。
二、基线告警规则
告警必须知道概念 | ||
概念 | 说明 | 备注 |
承诺时间 | 任务运行成功的最晚时间点 | |
预警时间 | 即承诺时间-预警余量 | |
基线任务 | 被添加到基线上的任务 | |
基线实例 | 系统使用基线实例计算任务每次运行的预计完成时间。 | 基线实例的状态包括:安全、预警、破线。 ●安全:预计完成时间<预警时间。 ●预警:预警时间<预计完成时间<承诺时间。 ●破线:预计完成时间>承诺时间。 |
关键路径 | 影响基线任务的多条路径中,运行耗时最长的路径。 | |
事件 | 基线任务及其上游任务出错,或关键路径上的任务变慢时,会产生事件。事件会影响基线任务的按时完成。 |
以阿里dataworks为例。将重要任务添加到基线上后,DataWorks将根据基线的优先级保障基线任务的资源,并根据基线任务的上下游依赖关系确定监控范围,根据该监控范围内任务的运行情况触发基线报警或事件报警。
说明:
- 影响任务(G)产出的上游节点的监控被纳入监控范围。
- 不影响基线任务的产出或未被添加基线监控对象的节点不在监控范围。
- 关键路径(最长路径):影响任务(G)产出耗时最长的路径。
如图所示:任务G添加为基线保障对象,若上游任务E出错,则首先给E任务owner告警,只有当E任务所在链路成为当前基线最长路径,且预测的执行完成时间比预警时间晚时,才会给基线值班同学告警。而如果E任务及时被修复,那么就不会给基线值班人员告警。
三、基线告警如何处理
首先有一个大前提,如果有基线告警,我们首先要进行的是问题的解决,及时解决问题,不影响基线的正常产出,当前问题解决之后再去看后续的一些保障措施。
关于基线告警的处理,这里可以简单分为几种类型:
- 上游任务引起:如果是上游任务引起的告警,那么需要联系上游任务Owner进行解决,如果对方不是数据开发同学,可能需要我们协助他进行问题的排查与处理。
- 个人任务引起:如果是我们自己的任务引起的告警,我们就需要查看具体引起告警任务的日志,排查定位解决问题。如果是任务执行变慢,可以优先进行参数优化,在线上执行一个相同的任务,让两个任务赛跑。这里一定要避免直接杀掉线上正在执行的任务。
夜间任何问题的处理,都需要在白天持续跟进,确保问题及时解决,避免第二天再次引起报警。
参考资料:
1.wx公众号(涤生大数据)-《数仓面试还不懂什么是基线管理?》