作者:DataWorks产品经理 张华蕊
一、运维中心简介
DataWorks运维中心是对任务进行测试和监控的模块,用户在DataStudio中进行代码开发和调试,将调试的任务经过提交发布操作后,就可以让任务按照调度配置来定时运行。也就是这个时候,任务就从开发环境进入到了生产环境。
对于生产环境中任务的测试、运维、监控等都是在运维中心完成的。运维中心包括三部分:运维大屏、任务运维和智能监控;根据任务运维的触发方式不同,又可以分为:实时任务运维、周期任务运维和手动任务运维。
(一)运维大屏
运维大屏展示当前需要重点关注的运维指标,包括失败实例、运行慢的实例、等资源实例、孤立节点、暂停节点和过期节点。可以点击大屏上的相应指标做进一步操作。
下图展示了实例运行状态分布,包括成功的、失败的或是等资源的等等。右侧是任务完成情况的折线图。最下面的曲线图展示的是调度资源的变化趋势。用户可以结合自己各个时间段的任务情况,来动态调整任务的运行时间,以达到合理使用资源的目的。
(二)任务运维
运维中心提供列表和DAG两种运维模式,列表模式下,上方是筛选区,下方是任务列表。用户可以方便的通过勾选进行批量操作。
在DAG模式下,用户不仅可以看到单个节点的运行情况,还可以通过展开上下游的
操作看到上下游节点的运行情况,方便用户排错。DAG提供了一种图形化的任务管理,千万级任务依赖图可以逐级展现。
实例是运维中心中非常重要的概念。上文所述,任务通过提交发布操作,从开发环境进入到生产环境,实例就是任务在生产环境被调度时生成的执行记录。
运维中心支持运行诊断、查看运行日志、重跑等操作,下面简单介绍一下。
(三)补数据
用户9月20日提交发布了一个任务,那么任务最早会从当日开始定时运行,数据也会从这天开始产出。如果用户想要拿到20日之前的数据该怎么操作呢。这就用到了补数据功能。
补数据功能入口在“周期任务”菜单中,列表模式下会看到补数据选项,或是在DAG图模式中对某个节点进行右键选择找到补数据选项。然后选择补数据的节点范围,是只针对当前节点补数据,还是对当前节点和下游补数据,或是海量节点模式补数据。在海量节点模式下用户可以选择多个工作空间下面的多个节点进行补数据操作。
如果想把9月的数据都补完,那么就可以设置9月1日-19日的范围。当补数据范围比较大或是节点数量比较多时,可以设置一下并行,这样可以提高补数据运行的速度。
所以补数据功能可以帮助用户获得过去某个特定时间段的数据。
(四)运行诊断
任务在定时运行中最理想的状态是运行不出错,任务产出的时间有保障。但事实是任务运行中总会遇到一些问题:定时时间到了任务不跑;任务突然运行慢了或者出错了。这时候就可以用到运维中心的运行诊断功能。
我们可以点击任务运行状态图标来发起诊断,也可以在DAG图里某个任务上右键选择运行诊断。
任务诊断包括4个部分,上游依赖、定时检查、调度资源和任务执行。
首先运行诊断展示了上游节点的运行情况,可以让用户迅速定位是哪个节点阻塞了,因为任务运行前提条件是上游节点都运行成功了。然后它会做一个定时检查,检查任务定时时间有没有到。调度资源部分展示了资源组水位情况(使用情况),下图折线部分是水位变化趋势,黄色色块表示任务在等资源,绿色色块表示任务在运行。同时历史实例菜单栏处还能查看同一任务历史15次的实例运行情况。
最后,MaxCompute还可以对运行日志进行聚类分析,锁定错误原因并智能提供诊断建议。
二、智能监控
DataWorks同时提供全局规则、自定义规则和基线三种监控方式。
(一)自定义规则:常规监测方法
如下图这个简单的业务流程,它是由6个节点组成。为了在任务出错时能够收到报警,用户可以新建一个自定义规则。设置这个规则可以通过三步,首先选择某个节点作为监控对象,其次设置触发条件,比如 “出错”,再详细设置报警次数、最小报警间隔、免打扰时间、报警方式、报警接收人,可支持的方式有短信、邮件、电话和钉钉。如果用户想针对多个节点都进行出错监控,可以直接在设置面板增加多个监控对象。
用户除了关注任务运行是否成功,也会关心任务完成的时间,因为任务的定时完成意味着数据的按时产出,这样才能保证其他消费这些数据的应用能正常运行。但是可能发生的上游阻塞或资源紧张的情况,该如何检测呢?
这里可以把报警触发条件设置为未完成,并设定一个触发时刻,举个例子,如果是9点的时候任务还没有完成,就会收到报警。这是单节点的情况,如果是多节点,需要给每个节点设置一个完成时间,比较麻烦,且这个时间只能通过用户的经验值来设定,参考意义比较有限。
(二)常规检测方法的问题
任务执行是依赖上游任务正常完成的,针对单个节点的配置无法感知上游任务的风险,所以当用户收到报警时,往往问题已经发生了。这就是自定义规则即常规监控方案的劣势:由于任务的检测配置各不相同,很难做到提前预知风险。而且当业务流程变得复杂,上述问题都会变得更加严重。对于多节点任务,更是很难梳理出哪些任务需要监控,这就会导致大量的任务产生大量的报警,而用户无法从这些报警信息中快速定位故障原因。
(三)基线
阿里内部每天有百万级实例在同时运行,阿里是怎么做到对这么大体量的任务进行高效监控呢?答案就是基线。
运维中心智能监控中,智能两个字就体现在基线上。用户只需要将重要节点添加到基线上,这个节点的上游就会自动纳入基线的监控范围,系统也会自动推断节点启动时间和完成时间,上游任务一旦出现异常,就会产生报警。报警的内容包括了出错和变慢,同时提供甘特图帮助用户快速锁定整个业务流程中的瓶颈节点。
(四)基线原理
下图的业务流程中包含12个节点,其中K代表关键产出节点,可以消费数据产出报表,领导每天9点半要看这个报表。
这个背景下如果使用基线功能来保障领导每天9点半都能看到正确的报表,首先需要将K节点设置一条基线,并把这个基线的承诺时间设置为9点半,同时给它30分钟的一个预警空间。
以上就是设置基线的全部操作,这个操作会引发系统一些列的动作。首先系统会把影响到产出的几个节点(即蓝色节点)都纳入基线的监控范围,而其它灰色节点不会被纳入监控范围。所以当蓝色节点出现问题,也会产出一条报警。
下面根据基线的承诺时间及各个任务历史运行时长,倒推出各个任务需要开始运行的时间。以K节点为例,承诺时间是9点半,预警buffer 30分钟,因此K需要在9点的时候运行完成。K的平均运行时间是30分钟,因此K需要在8点半的时候就开始运行。而“I”这个节点平均运行时间是2小时,所以它在6点半的时候就需要开始运行了。以此类推,A节点需要在4点半的时候开始运行。这样,可以找到一条关键链路,即执行时间最长的链路,如下图所示ABFIK这5个节点的链路。
关键链路不是一成不变的,根据任务的运行情况,它是随时变化的。系统会动态地调整关键链路。举个例子,如果E节点运行时间从10分钟变成40分钟,关键路径就会变成ABEIK,如果关键路径上的节点出现了变慢的情况,用户就会收到报警。同时,系统会一直计算这条基线的预计完成时间,如果预计完成时间晚于承诺时间减去预警buffer的时长,也会收到基线的报警。
因此如果把K节点放在一条基线上,那么K这个节点本身及任何影响这个节点产出的异常情况,都会被监测到。这样用户就能通过这种简单的配置基线的操作洞察所有影响这个重要节点的异常了。
(五)智能监控的使用
基线是在运维中心一级菜单“智能监控”里面的,可以通过“基线管理”新建基线,基线类型包括天基线和小时基线分别针对天任务和小时任务,然后再把任务添加到基线,再设置优先级。优先级越高,在抢占资源时就会优先分配。最后再设置一个承诺时间和预警buffer就完成了。
三、移动版DataWorks使用
(一)使用场景
当DataWorks用户下班回家或者出差旅行途中接收到任务报警、权限审批或产品到期提醒的情况时,可以使用移动版DataWorks。
(二)使用方法
移动版DataWorks使用方法有三种:阿里云App、手机浏览器和钉钉小程序。
第一种方法通过阿里云App。在手机端安装阿里云App,在顶部搜索栏输入DataWorks,点击前往控制台。
第二种通过浏览器。在浏览器地址栏输入workbench.data.aliyun.com,即可打开控制台,也可以将网页保存为书签,方便下次使用。
第三种通过钉钉小程序。登录手机钉钉App,单击钉钉下方菜单栏中的工作,点击页面左上方切换至“大数据+AI”组织,然后单击数据应用,找到DataWorks来操作。
(三)亮点功能
首先是与报警短信结合,任务运维快人一步。用户可以通过报警短信中的链接,直接在手机浏览器中打开移动运维功能,可以对任务进行一些重跑操作。
第二是使用基线前提下,可以提供非常清晰的甘特图,横竖屏切换自如。
第三是用户查看日志时可以一键到底,或一键到顶。
最后是移动审批功能,用户可以在手机上直接处理表权限的审批,这个功能也支持批量操作。如果用户打开阿里云App消息通知权限,当有人申请表权限时,审批人就会收到一条阿里云App的推送消息,点击这个消息可以一键直达移动审批来进行审批操作。
运维中心介绍及实践请参考:https://developer.aliyun.com/learning/course/81/detail/1231
DataWorks官网:https://www.aliyun.com/product/bigdata/ide
大数据&AI体验馆:https://workbench.data.aliyun.com/experience.htm