MaxCompute作业日常监控与运维实践

简介: MaxCompute作业日常监控与运维实践

监控项目作业超时运行

案例一

专用于业务团队取数的project_A ,基本都是手动跑SQL查询,每个作业执行基本不会很长时间,由于目前使用的是包年包月计算资源,为了防止单个作业长期占用资源,需要对作业进行超时监控。假设对于project_A的SQL作业,只要某个作业运行时长(等待时间+真正运行时间)超过15分钟,则视为异常用时作业,需介入检查。

  • 监控配置
  1. 登录云监控控制台
  2. 在左侧导航栏,单击报警服务 > 报警规则。
  3. 在报警规则页面的阈值报警页签,单击创建报警规则。
  4. 单击创建报警规则。
  5. 在创建报警规则页面,基于场景配置报警规则相关信息,详细参数配置请参见创建阈值报警规则。配置报警联系人详情请参见创建报警联系人或报警联系组

 MaxCompute作业日常监控与运维实践_第1张图片

  • 资源范围:选择项目名称,并在下方"项目名称"中指定需要监控的项目project_A 。
  • 规则描述:即选择监控指标,如此案例我们针对项目下所有作业 监控,则选择作业运行时长类型。最大值大于等于15*60=900秒,即配置作业运行时长超过15分钟则触发告警,注意单位为'秒'。
  • 通知方式:可以选择短信+邮件+钉钉机器人 (Warning),以便快速从各个通道获取告警,另外告警接收人要注意一定要配置好具体人员,避免接收的人员不是负责此业务的人员。
  • 告警处理
  • 收到单个job的超时告警,考虑是否单个作业本身问题,可以通过MaxCompute管家的作业运维管理-高级查询单独搜索这个instance id:

     MaxCompute作业日常监控与运维实践_第2张图片

在结果列表里,可以看到作业的基本信息,可以点击'Logview'查看详情,如是否是长尾、是否是作业查询量本身就非常大等,经过判断后,可以考虑是否让job继续运行,若不能继续运行则kill掉。若一直是等待资源状态,那么可以到“作业快照”中查看当前时刻,对应资源组的作业负载情况,是否是有其他项目作业占满长期占满资源等。

  • 收到多个job超时告警,或者持续单个不同的job超时告警,可以考虑是否是资源不足,大量作业在等待资源,可以在MaxCompute管家作业快照里查看对应资源组此刻正在运行作业负载情况,人工介入,该kill作业的kull作业,该扩容的扩容等。

案例二

生产项目project_B ,有跑MaxCompute的SQL、spark等类型任务,所有生产任务都比较重要,正常情况下再大的任务执行时间(等待时间+真正运行时间)不会超过1个小时,考虑到spark有流式作业存在,一个job拉起会很长时间也是正常现象,因此对于本生产项目,可以对SQL类型作业进行监控超时情况,以便尽快介入检查。

  • 监控配置
  1. 登录云监控控制台
  2. 在左侧导航栏,单击报警服务 > 报警规则。
  3. 在报警规则页面的阈值报警页签,单击创建报警规则。
  4. 单击创建报警规则。
  5. 在创建报警规则页面,基于场景配置报警规则相关信息,详细参数配置请参见创建阈值报警规则。配置报警联系人详情请参见创建报警联系人或报警联系组

MaxCompute作业日常监控与运维实践_第3张图片

  • 资源范围:选择项目名称,并在下方"项目名称"中指定需要监控的项目project_B 。
  • 规则描述:即选择监控指标,如此案例我们针对项目下所有作业 监控,则选择作业运行时长类型。最大值大于等于60*60=3600秒,即配置作业运行时长超过1个小时则触发告警,注意单位为'秒'。
  • 通知方式:可以选择短信+邮件+钉钉机器人 (Warning),以便快速从各个通道获取告警,另外告警接收人要注意一定要配置好具体人员,避免接收的人员不是负责此业务的人员。
  • 告警处理
  • 收到告警后,您可以通过MaxCompute管家的作业运维管理-高级查询单独搜索对应的job,在结果列表中可先判断是否还是等待资源状态,若是,则可以通过作业快照查看此刻对应资源组作业运行情况是否资源紧张;若不是,可以点击Logview查看详细信息,是否长尾等。判断作业的合理性,决定是否继续运行或者kill掉。

若您是通过DataWorks使用MaxCompute,也可以通过DataWorks的智能监控配置自定义监控规则进行作业超时监控。DataWorks上还可以针对具体调度节点进行监控,监控的指标也更加丰富。

需要注意的是,如果作业一直为运行状态,触发告警的job如果一直处在running状态,那么只要满足告警周期规则,会持续发出告警,直到job运行完成(成功或失败)。如果遇到需要放行继续运行的job,告警周期又短,可能会频繁收到告警,因此在配置规则时告警周期需要合理配置。

查看某时段发起的作业执行情况

日常数据开发过程中,需要对自己负责的作业进行运维管理,如查看当天发起的作业执行情况,有哪些作业失败要查看失败原因等。

通过MaxCompute管家的作业运维管理,可以查看,如下图:

MaxCompute作业日常监控与运维实践_第4张图片

选择需要查看具体发起作业的时间段,选择状态,cancelled即为失败状态,点开高级查询,输入提交人(目前只支持精准匹配,需要带上ALIYUN$RAM$前缀),进行搜索。在结果列表里可以快速获取一些基础信息,但是要查看具体失败原因,还需要点击Logview,通过Logview日志查看详情,包括查看对应跑的什么脚本、返回的失败信息等。

需要注意的是,如果是通过DataWorks发起的作业,且项目的“MaxCompute访问者身份”选择的是阿里云主账号的话,那么项目的所有提交人都会是主账号,因此就不适合通过“提交人”进行过滤,只能按其他粒度进行过滤。

查看某时刻包年包月资源组作业负载

作业资源运维人员,管理计算资源的分配,如收到开发人员反馈当前大量作业等待资源,通过MaxCompute管家概览页的“CU资源使用趋势”查看对应资源组的负载线图,点击具体时间点查看对应时刻作业快照:

MaxCompute作业日常监控与运维实践_第5张图片

  • 如果对应资源组是完全独享型(所有自定义配额组预留CU都是最大值=最小值),选择具体的资源组进行查看,这样更有针对性。点击曲线图上对应时刻,进入此刻的作业快照列表,查看当前运行的作业资源占用情况。在结果列表中,再对CUP使用占比进行从高到低排序,看是否是某个或某几个作业长时间占用大量资源,针对性对这些作业进行处理。
  • 如果资源组是共享型(自定义配额组预留CU最大值>最小值),那么可以直接默认查看所有资源组的CU资源使用趋势,这样进入快照列表中看所有资源的作业列表,对CUP使用占比进行从高到低排序,可以看到具体哪些作业在哪个资源组抢占了大量资源,进而针对性的处理作业,或者调整资源组,比如业务优先级低的项目所在资源组最大值可以分配小一些,以免抢占高优先级项目所属资源组的资源。

针对资源组的分配,可以参考包年包月资源隔离包年包月资源分时配额

查看某作业执行相关信息

在做费用审计、资源审计等,获取到了某个job的instance id,需要找到提交人或者查看具体是执行了什么脚本等。

案例:如使用按量计费资源,对SQL进行费用审计,发现有某个或某几个作业费用异常,需要知道是谁执行的,执行的sql是什么。

  1. 通过MaxCompute管家的作业运维管理-高级查询单独搜索对应的job,因为是SQL消费审计,作业一定是成功状态,所以选择terminated状态。
  2. 在结果列表中,查看信息:
  • 若提交人为子账号,则可直接找对应子账号负责人进行自检。
  • 若提交人为主账号且有DataWorks节点ID非空,则大概可以判断是通过DataWorks调度发起的生产节点,可以到DataWorks 运维中心查看周期任务搜索节点,找到对应“责任人”,让责任人自检。
  • 若提交人为主账号,且DataWorks节点ID为空,此类比较难以判断责任人,可以通过点击查看Logview,获取具体的query,线下寻找跑过此query的提交人。需要注意的是,Logview一般保留时长为7天,超过7天,可以尝试通过information schema->TASKS_HISTORY获取作业信息。
  • 若作业是最近7天运行的,作业责任人自检时,也可以直接在结果列表里访问Logview进行查看。

原文链接
本文为阿里云原创内容,未经允许不得转载。

你可能感兴趣的:(数据库)