为避免在MaxCompute按量计费模式下因计算任务资源消耗超预期而产生超额费用,系统支持通过设置消费监控阈值(限制资源消耗或费用预警方式)实现成本控制。当资源用量或费用超过预设阈值时,将自动触发告警,并以短信、邮件、钉钉或电话等多种方式向您发送告警通知,帮助您及时响应以降低潜在成本风险。
功能介绍
MaxCompute按量计费资源为弹性伸缩资源,按需求为计算任务提供资源,对资源使用无限制。因此,您需要监控计算任务的消费情况,以免超出预期。MaxCompute提供如下消费监控告警方式:
消费监控告警方式 | 消费限制措施 | 描述 |
限制资源消耗 | MaxCompute支持在执行SQL语句前预估SQL语句的资源消费。当预估资源消费超出设定的阈值时,SQL语句执行受限,系统返回失败状态并给出失败信息。您可以通过此功能预防单个SQL语句产生高额费用。 | |
费用预警 | 您可以通过云监控平台进行配置,针对未出账的标准SQL和MapReduce计算任务进行实时消费监控及告警。系统以项目(Project)为单位,按量统计日或月的累计消费,详细计费方式请参见计算费用(按量付费)。当累计消费超出设定的阈值时,系统会通过电话、短信、邮件或钉钉等方式通知您。 说明 实时消费是指单纯的计量消费,未出账,不含任何优惠及折扣。 | |
费用预警 | 监控Project中标准SQL的日累计消费。如果当日Project中标准SQL已产生的累计消费与新发起的标准SQL预估消费总和超过设定的阈值,新发起的标准SQL执行受限,系统返回失败状态并给出失败信息。您可以通过此功能阻止标准SQL日累计消费超出预期。 说明 日累计SQL消费是指单纯的计量消费,未出账,不含任何优惠及折扣。 | |
费用预警 | 您可以通过阿里云的费用与成本进行设置,针对已经出账的账单金额进行监控及告警。MaxCompute按量计费的账单为天账单,即当天消费第二天出账,该方式只能监控历史消费金额。如果当天的账单金额超出设定的阈值,系统会在第二天09:00左右通过短信方式通知您。 |
单SQL消费限制
设置方式
单SQL消费限制支持如下两种设置方式:
Project级别设置
需要由Project Owner或者拥有Super_Administrator角色的用户执行如下命令开启或撤销单SQL消费限制。
--开启单SQL消费限制。 SETPROJECT odps.sql.metering.value.max=<m_value>; --撤销单SQL消费限制。 SETPROJECT odps.sql.metering.value.max;
m_value指单SQL消费的最高阈值,是
SQL读取量(GB)×SQL复杂度
的值,并非消费金额。说明Project的单SQL消费受m_value限制。如果某个SQL的预估消费超过m_value,该SQL执行受限。
Session级别设置
将如下命令和SQL语句一起提交执行即可开启单SQL消费限制,SQL语句前不添加该命令则表示撤销单SQL消费限制。只对本次执行有效。
SET odps.sql.metering.value.max=<m_value>;
设置建议
在实际操作中,建议您:
根据项目中历史SQL消费以及您的预期消费设定Project级别的m_value。
您可下载每天的详细计量信息,以Project为粒度,计算SQL任务(数据分类为ComputationSql的任务)的资源消耗量(即
SQL读取量(GB)×SQL复杂度
),并根据每日正常消耗的最高值,结合业务波动确定一个合适的值。您还可以将计算消耗换算成费用(即
SQL读取量(GB)×SQL复杂度
×0.3),再结合业务情况,确定一个合适的金额后换算成消耗量m_value值=确定的金额(单位:元)/0.3
。
先设置Project级别的消费限制,然后针对某些特殊的SQL单独设置Session级别的m_value限制。
说明设置Session级别的消费限制前,请您务必确认相应的SQL确实需要Session级别的限制,避免滥用该功能。
如果同时设置Project级别和Session级别的消费限制,则Session级别优先级高于Project级别。
例如:Project级别设置m_value为100,而Project中某个SQL设置了Session级别的m_value为200,则该SQL执行前预估消费超过100不受限,超过200会受限。其他没有单独设置Session级别限制的SQL语句,会遵从Project级别的限制,预估消费超过100就会受限。
无论是设置Project级别还是Session级别的消费限制,都会影响任务的执行,建议您结合任务失败告警功能(例如DataWorks的智能监控)使用,及时感知任务失败并进行人工干预处理,以免关键任务被限制后影响业务。
只对单SQL消费限制不能完全预防意料之外的高额账单,您可能还需要同时使用实时消费监控告警,实时监控Project中SQL和MapReduce任务的累计消费金额。
实时消费监控告警
登录云监控控制台。
新建报警联系人。
在左侧导航栏,单击
。在报警联系人页面,单击创建联系人。
在设置报警联系人面板中,填写姓名、手机号和邮箱等信息。
配置完成后,单击确认。
创建报警联系组。
在报警联系人页面,单击报警联系组页签。
在报警联系组页面,单击新建联系人组。
在新建联系人组面板,填写组名、备注,并从已有联系人列表选择需要加入的联系人并显示在已选联系人列表中。
配置完成后,单击确认。
配置阈值报警规则。
具体操作请参见创建报警规则。其中重点参数配置如下:
参数
说明
产品
选择MaxCompute-通用。
资源范围
选择全部资源。
规则描述
根据实际业务选择Cost > 按量付费作业的日/月消费。
监控指标详情请参见监控报警。
日累计SQL消费限制
设置方式
Project日累计SQL消费限制通过如下命令进行设置。仅Project Owner或者拥有Super_Administrator角色的用户可以执行该命令。
SETPROJECT odps.costcontrol.rule={"byDate":{"sql":<Limit>}};
byDate:日累计。以东八区时间为准,计算当日00:00:00~23:59:59期间的累计消费,第二天重新累计消费。
Limit:Project标准SQL的日累计金额消费阈值,单位:元。此处统计的消费不含任何优惠和折扣。
说明单SQL消费=扫描数据量(GB)×复杂度×0.3
注意事项
通过上述命令设置后,需注意以下规则:
规则类型 | 系统行为 | 示例与告警建议 |
首次设置 | 累计Project中标准SQL的当日总消费,并预估新发起的标准SQL消费。 | 示例:首次在Project级别设置 |
非首次设置(修改已有值) | 新消费预估基于已累计值和新设置的限值进行校验,以确定是否限制;累计值不重置。 | 若原日累计SQL消费限制为100,当日已累计消费为99,将限值修改为150后,再发起新的标准SQL。 此时系统会先预估该SQL的费用(假如预估为20),若该SQL的预估消费与已累计消费之和(20+99)小于或等于150,则该SQL可正常执行,否则将触发拦截。 |
当日累计消费和预估消费总和大于Limit | 新发起的标准SQL任务被拦截,不能执行,同时返回报错信息。 |
|
高额消费预警
您可通过阿里云费用与成本页面的高额消费预警模块,针对MaxCompute(按量付费)商品设置高额消费预警。
新版费用与成本控制台中,高额消费预警的设置方法请参见成本预警。
登录费用与成本。
在
页面单击高额消费预警后的详情。在高额消费预警页面,选择预警商品并填写预警阈值,单击增加。