本文介绍如何设置消费监控告警,对按量计费的计算任务进行消费监控并在超过阈值时通过钉钉、短信等形式为您发送告警。

MaxCompute按量计费资源为弹性伸缩资源,对于计算任务,按任务需求提供资源,对资源使用无限制。因此,有必要对计算任务的消费进行监控,以免在您未注意的情况下消费超出预期。MaxCompute目前提供了三种消费监控告警方式:
  • 单SQL消费限制:监控单个SQL语句的消费,在SQL语句执行前先预估SQL语句的消费。当消费超过设定值时,限制SQL语句执行,返回失败状态并给出失败信息。通过此功能预防单个SQL语句产生意料之外的高额费用。
  • 实时项目日、月累计消费监控告警:通过云监控平台进行配置,针对未出账的标准SQL和MapReduce计算任务进行实时消费监控告警。计算消费以项目(Project)为单位,按计量统计日/月的累计消费,详细计费方式请参见计算费用(按量计费)。如果累计消费超出设定的阈值,便会通过电话、短信、邮件等方式通知您。
    说明 实时消费是指单纯的计量消费,未出账,不含任何优惠及折扣。
  • 历史高额消费预警:通过阿里云用户中心进行设置,针对已经出账的账单金额进行监控及告警。MaxCompute按量计费的账单为天账单,即当天消费需要第二天才出账,因此此方式只能监控历史消费金额。如果当天的账单金额超出提醒阈值,就会在次日早上9点左右进行短信提醒。

单SQL消费限制

单SQL消费限制通过如下命令设置,有两种方式:
  • 项目级别设置。需要项目Owner或者拥有Super_Administrator角色的用户执行该命令。
    setproject odps.sql.metering.value.max=m_value;

    设置之后此项目的所有SQL消费都受到m_value的限制。一旦某个SQL预估消费值超过m_value就被限制执行。此设置可以防止意外的高额SQL消费。

    m_value是指SQL消费的最高阈值。此处填写的值并非金额,而是SQL扫描量(GB)*SQL复杂度的值。

  • Session级别设置,命令如下。此命令需要和SQL语句一起执行。只对本次执行有效。
    set odps.sql.metering.value.max=m_value;

如果Project级别和Session级别同时设置消费限制,则Session级别优先级高于Project级别。例如,Project级别设置m_value值为100,而该项目里某个SQL语句执行时设置了Session级别的m_value为200,则该SQL语句执行前预估消费超过100不会被限制,超过200才会被限制。其他没有单独设置Session级别限制的SQL语句,会遵从Project级别的限制,预估消费超过100就会被限制。

在实际操作中,建议您:
  • 根据项目中历史的SQL消耗以及您对费用的预期来设定Project级别的m_value

    您可以通过查看账单详情下载每天详细使用的计量信息,以Project为粒度,计算SQL任务(即数据分类为ComputationSql的任务)的计算消耗(即SQL读取量(GB)*SQL复杂度)。例如,计算每日正常消耗的最高值,结合业务波动确定一个合适的值。

    您还可以将计算消耗换算成费用(即SQL读取量(GB)*SQL复杂度*0.3),再结合业务情况,确定一个合适的金额,然后再换算成消耗量m_value值=确定的金额(单位:元)/0.3

  • 通常建议先设置Project级别的消费限制,然后针对某些特殊的SQL语句单独设置Session级别的m_value限制。
    说明 使用前,请务必确认相应的SQL语句确实需要Session级别的限制,避免滥用该功能。
  • 无论是设置Project级别还是Session级别的消费限制,都会影响任务的执行,所以建议您结合任务失败告警功能(例如,DataWorks中的智能监控)使用。这样可以及时感知任务失败并进行人工干预处理,以免关键任务被限制后影响业务。

仅仅对单SQL消费限制不能完全预防意料之外的高额账单,您可能还需要同时使用实时消费监控告警,实时监控项目中的SQL和MapReduce任务的总计量消费金额。

实时消费监控告警

  1. 登录云监控控制台
  2. 新建报警联系人。
    1. 在左侧导航栏,单击报警服务 > 报警联系人,进入报警联系人管理页面。
    2. 单击右上角新建联系人按钮。
    3. 设置报警联系人页面,填写姓名、手机号、邮箱等信息。
    4. 单击保存
  3. 创建报警联系组。
    1. 单击上方的报警联系组页签。
    2. 单击右上角的新建联系组,进入新建联系组页面。
    3. 填写组名备注并从已有联系人列表选中需要加入的联系人显示在已选联系人列表中。
    4. 单击确定完成创建报警联系组。
  4. 配置阈值报警规则。
    1. 在左侧导航栏,单击报警服务 > 报警规则,进入报警规则列表页面。默认为阈值报警列表。
    2. 单击创建报警规则按钮。
    3. 创建报警规则页面,配置相关参数,参数说明见下表。
      区域 参数 说明
      关联资源 产品 产品选择MaxCompute-按量付费
      资源范围 报警规则的作用范围。选择全部资源,即产品下任何实例满足报警规则描述时,都会发送报警通知。
      设置报警规则 规则名称 报警规则的名称,用户自定义。
      规则描述 报警规则的主体,定义在监控数据满足何种条件时,触发报警规则。
      通道沉默周期 指报警发生后如果未恢复正常,间隔多久重复发送一次报警通知。最短为5分钟,最长为24小时。
      生效时间 报警规则的生效时间,报警规则只在生效时间内发送报警通知,非生效时间内产生的报警只记录报警历史。
      通知方式 通知对象 接收报警通知的联系人组。
      报警级别
      • Critical:电话语音+手机短信+邮件+钉钉机器人。
      • Warning:手机短信+邮件+钉钉机器人。
      • Info:邮件+钉钉机器人。
      弹性伸缩 选择弹性伸缩规则后,会在报警发生时触发相应的弹性伸缩规则。
      邮件备注 自定义报警邮件补充信息,非必填项。填写后,报警邮件会包含您在此处填写的信息。
      报警回调 云监控会将报警信息通过POST请求推送到您填写的公网URL地址,目前仅支持HTTP协议。
    4. 配置完成后,单击确认

历史高额消费预警

  1. 登录阿里云用户中心
  2. 单击高额消费预警高额消费预警
  3. 选择预警产品并填写预警阈值后,单击增加添加预警产品