基于MaxCompute的离线任务对数据产出有严格的时间要求,在确保数据准确性的前提下,还需要让数据能够及时提供服务。本文为您介绍如何使用DataWorks智能监控的规则管理功能监控数据的及时性。

前提条件

如果您想使用完整的智能监控功能,需要购买标准版及以上版本DataWorks,详情请参见DataWorks各版本详解。关于DataWorks智能监控功能详情请参见智能基线概述

背景信息

您在监控数据产出的及时性前,首先需要确定调度任务的优先级。数据资产等级越高的任务节点,优先级越高,您可以给予更加严格的数据及时性监控和告警规则。

操作步骤

  1. 进入规则管理页面。
    1. 在DataStudio页面单击运维中心(工作流)运维中心
    2. 运维中心页面,单击左侧导航栏上的智能监控 > 规则管理,关于规则管理的详情请参见自定义规则
  2. 新建自定义规则。
    单击右上角的新建自定义规则,输入参数后单击确定即可。在本例中,监控整个业务流程每次运行时间不可超过30分钟。如果运行时间超过30分钟,则上报1次告警。连续上报3次告警,系统自动以邮件及短信的方式来上报。自定义规则
    对于重要的任务节点,您还可以单独设置任务节点规则,并定义其他触发条件触发条件
    1. 配置基本信息。
      参数 描述
      规则名称 输入新建自定义规则的名称。
      对象类型 指定监控对象的类型,定义监控的粒度。包括任务节点基线工作空间业务流程独享调度资源组独享数据集成资源组
      说明 对象类型为基线时,仅对基线上的任务运行状态进行监控,不会监控基线任务的上游任务,如果您需要同时监控基线任务的上游任务,请参见:智能基线概述
      规则对象 指定监控对象。

      如果对象类型选择任务节点基线工作空间业务流程,则需要填写规则对象。输入监控对象的名称或者ID后,在列表中选择需要添加的对象,单击添加

    2. 配置触发方式。
      说明 自定义报警逻辑中,任务冻结状态表示任务已完成。
      对象类型 触发条件 描述
      任务节点基线工作空间业务流程 完成
      表示从任务运行的起始时间点开始监控,在任务运行成功时系统发送报警。
      • 当对象类型为基线业务流程时,仅当基线、业务流程上的所有任务都运行成功时,才会触发报警。
      • 当对象类型为任务节点,且添加了多个节点时,仅当所有节点都执行完成时,才会触发报警。
      • 当对象类型为工作空间时,触发条件不支持设置为完成
      说明 对于小时任务,只有全部周期均运行成功后,该任务才会被判定为完成。
      未完成

      表示从任务运行的起始时间点开始监控,到指定的目标时间点任务仍未结束运行,则系统发送报警。

      说明 此报警与智能基线报警策略不同,智能基线能够及时捕捉导致基线上的任务无法按时完成的异常情况并提前预警,详情请参见:智能基线概述
      场景示例:
      • 场景一:任务的定时调度时间为1点,设置的未完成时间为2点,则1点时该任务开始运行,在2点时任务仍未结束运行,则发送报警。
      • 场景二:设置任务每天0:00~23:59每小时调度一次,当该任务未完成时间设置为12点时,则该规则每天都会触发告警。
      • 场景三:设置某基线完成时间为10点,则只要基线上有一个任务没有在10点完成,便会发送告警。
      说明 对于小时或分钟任务,会校验当天所有周期在指定时间点是否未运行完成。
      出错

      表示从任务运行的起始时间点开始监控,如果任务运行出错,则系统发送报警。

      说明

      实例任务运行出错即在运维中心 > 周期任务运维 > 周期实例的基本信息列,目标实例显示3状态。

      • 当对象类型为基线工作空间业务流程时,只要基线、工作空间或业务流程内的某个任务运行出错,便会触发告警。
      • 任务每次运行出错都会触发报警,如果某个任务出错报警次数为2,当该任务重跑2次均出错时,将会触发4次报警。
      • 如果您需要在任务自动重跑后仍出错时再触发报警,则可以将触发条件配置为:自动重跑后仍出错
      周期未完成

      表示在指定的周期内,任务仍未结束运行,则系统发送报警。通常用于监控以小时为周期单位的实例任务。

      当业务流程设置了周期未完成监控后,系统会根据您设置的周期N,对业务流程中的任务(例如,天任务、小时任务、分钟任务等),进行第N个周期任务的监控。如果实例数少于N时,则会忽略该任务的告警。

      例如,设置的周期为3,业务流程中有如下两个任务,则告警监控情况如下:
      • 小时任务A:每2小时调度一次,运行一次耗时25min。运行起始时间为每日0点0分,则该任务一天(24小时)共有12个任务周期,0点为第一个周期,则第3个周期为4点。该任务正常运行时,第3个周期任务会在4点25分执行完毕。此时设置触发条件为周期未完成,且指定该任务第3个周期在4点30未完成的时候发送报警信息,则如果任务某天运行到4点30还未完成时,将会发送报警。
      • 分钟任务B:每10分钟调度一次,运行一次耗时2min。运行起始时间为每日0点0分,则该任务一小时共有6个任务周期,0点0分为第一个周期,则第3个周期为0点20分。该任务正常运行时,第3个周期任务会在0点22分执行完毕。此时设置触发条件为周期未完成,且指定该任务第3个周期在0点23未完成的时候发送报警信息,则如果任务某天运行到0点23还未完成时,将会发送报警。
      超时
      表示从任务运行的起始时间点开始监控,到指定的运行时长后,该任务仍未结束运行,则系统发送报警。通常用于监控任务的运行时长。
      说明 如果监控的任务执行失败,到指定的运行时长后,该任务仍处于未成功状态,将触发超时告警。
      自动重跑后仍出错
      表示从任务运行的起始时间点开始监控,如果任务运行出错且自动重跑后仍出错,则系统发送报警,
      说明 如果您需要在任务每次运行出错时就触发报警,则可以将触发条件配置为:出错
      任务转实例完成 仅当对象类型为工作空间时,可以选择该触发条件。
      实例数量波动 仅当对象类型为工作空间时,可以选择该触发条件。DataWorks每天在24:00前生成次日需要运行的周期实例,当工作空间的实例数量与历史均值相比发生一定幅度的波动时,您将收到该报警。
      独享调度资源组独享数据集成资源组 资源组利用率 利用率大于某个数值并持续指定时长时,触发该报警。

      示例:利用率大于50%并持续15分钟时,触发报警。

      资源组上等待资源的实例数 等资源实例数大于某个数值并持续指定时长时,触发该报警。

      示例:等资源实例数大于10并持续15分钟,触发报警。

    3. 配置报警行为。
      报警方式 报警接收人 描述
      邮件短信、电话 支持报警给任务责任人值班表其他人员
      • 您可以单击校验联系方式,校验手机号或邮箱是否填写正确。
      • 您需要购买DataWorks专业版及以上版本,才可以使用电话告警功能。
      • 如果您选择报警方式电话,则需要选中为了避免短时间内产生大量报警电话,DataWorks会对报警电话进行过滤,同一个用户在20分钟内最多接受到一通报警电话,其余报警电话将被降级为短信,请知悉。
      • 您需要先配置值班表,再在此处选择报警给值班表,值班表配置详情请参见:值班表
      钉钉群机器人WebHook 群内人员
      • 您可单击操作列的发送测试消息,测试该报警是否可以正常发送。如未收到告警信息,请参考智能监控进行排查。
      • DataWorks仅支持使用钉钉群、企业微信和飞书的Webhook地址,如果您需要使用其他的WebHook,请工单联系我们。
      • 钉钉群机器人安全配置仅支持配置关键字,并且关键字需要包含DataWorks
    4. 配置疲劳度控制。
      参数 描述
      最大报警次数 报警的最大次数,超过设置的次数后,不再产生报警。
      最小报警间隔 两次报警之间的最小时间间隔。
      免打扰时间 设置了免打扰时间后,则在该时间段内系统将不会发送告警。

      例如,当设置了任务状态为超时出错未完成时触发报警,且该任务设置的免打扰时间为00:0008:00,则该时间段内将不会发出报警信息,如果到达8点,任务仍处于上述异常状态,将会发出报警信息。

  3. 数据及时性优化。
    通常,影响数据按时产出的主要原因和优化方式如下表所示。
    问题原因 问题优化
    计算资源不足
    • 资源总量不足。例如,资源上限为500,但您提交了需要1000资源的任务。
    • 资源分配不合理,重要任务未优先分配资源。
    扩容计算资源,或让核心计算任务独占资源。
    代码执行效率低
    • 代码冗余。例如,扫描所有分区。
    • 节点任务配置不合理。例如,出现长尾问题。
    分级错峰,高峰时段让低优先级任务延迟启动。
    缺少问题紧急预案,运维人员无法应对。 在任务正式运行前,进行充分的测试。