本文为您介绍如何对按量计费的计算任务设置消费监控告警,并在超过阈值时通过电话、短信、邮件或钉钉等方式为您发送告警。
功能介绍
- 单SQL消费限制:MaxCompute支持在执行SQL语句前预估SQL语句的消费。当预估消费超出设定的阈值时,SQL语句执行受限,系统返回失败状态并给出失败信息。您可以通过此功能预防单个SQL语句产生高额费用。
- 实时消费监控告警:您可以通过云监控平台进行配置,针对未出账的标准SQL和MapReduce计算任务进行实时消费监控及告警。系统以项目(Project)为单位,按量统计日或月的累计消费,详细计费方式请参见计算费用(按量计费)。当累计消费超出设定的阈值时,系统会通过电话、短信、邮件或钉钉等方式通知您。
说明 实时消费是指单纯的计量消费,未出账,不含任何优惠及折扣。
- 日累计SQL消费限制:监控Project中标准SQL的日累计消费。如果当日Project中标准SQL已产生的累计消费与新发起的标准SQL预估消费总和超过设定的阈值,新发起的标准SQL执行受限,系统返回失败状态并给出失败信息。您可以通过此功能阻止标准SQL日累计消费超出预期。
说明 日累计SQL消费是指单纯的计量消费,未出账,不含任何优惠及折扣。
- 历史高额消费预警:您可以通过阿里云用户中心进行设置,针对已经出账的账单金额进行监控及告警。MaxCompute按量计费的账单为天账单,即当天消费第二天出账,该方式只能监控历史消费金额。如果当天的账单金额超出设定的阈值,系统会在第二天09:00左右通过短信方式通知您。
单SQL消费限制
- 项目级别设置。Project Owner或者拥有Super_Administrator角色的用户才能执行该命令。
setproject odps.sql.metering.value.max=<m_value>;
m_value指单SQL消费的最高阈值,是
SQL扫描量(GB)×SQL复杂度
的值,并非消费金额。Project的单SQL消费受m_value限制。如果某个SQL的预估消费超过m_value,该SQL执行受限。
- Session级别设置。该命令需要和SQL语句一起执行。只对本次执行有效。
set odps.sql.metering.value.max=<m_value>;
如果同时设置Project级别和Session级别的消费限制,则Session级别优先级高于Project级别。例如,Project级别设置m_value为100,而Project中某个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限制。
说明 设置Session级别的消费限制前,请您务必确认相应的SQL确实需要Session级别的限制,避免滥用该功能。
- 无论是设置Project级别还是Session级别的消费限制,都会影响任务的执行,建议您结合任务失败告警功能使用。例如,DataWorks的智能监控功能。您可以及时感知任务失败并进行人工干预处理,以免关键任务被限制后影响业务。
只对单SQL消费限制不能完全预防意料之外的高额账单,您可能还需要同时使用实时消费监控告警,实时监控Project中SQL和MapReduce任务的累计消费金额。
实时消费监控告警
- 登录云监控控制台。
- 新建报警联系人。
- 在左侧导航栏,单击 。
- 在报警联系人页面,单击新建联系人。
- 在设置报警联系人页面,填写姓名、手机号和邮箱等信息。
- 配置完成后,单击确认。
- 创建报警联系组。
- 在报警联系人页面,单击报警联系组页签。
- 在报警联系组页面,单击新建联系组。
- 在新建联系组页面,填写组名、备注,并从已有联系人列表选择需要加入的联系人显示在已选联系人列表中。
- 配置完成后,单击确认。
- 配置阈值报警规则。
- 在左侧导航栏,单击报警规则列表页面。默认为阈值报警列表。 ,进入
- 单击创建报警规则。
- 在创建报警规则页面,配置相关参数,参数说明见下表。
区域 参数 说明 关联资源 产品 选择MaxCompute-按量付费。 资源范围 报警规则的作用范围。选择全部资源,即产品下任何实例满足报警规则描述时,都会发送报警通知。 设置报警规则 规则名称 报警规则的名称,用户自定义。 规则描述 报警规则的主体,定义监控数据满足何种条件时,触发报警规则。 通道沉默周期 报警发生后如果未恢复正常,间隔多久重复发送一次报警通知。最短为5分钟,最长为24小时。 生效时间 报警规则的生效时间,只在生效时间内发送报警通知,非生效时间内产生的报警只记录报警历史。 通知方式 通知对象 接收报警通知的联系人组。 报警级别 - Critical:电话语音+手机短信+邮件+钉钉机器人。
- Warning:手机短信+邮件+钉钉机器人。
- Info:邮件+钉钉机器人。
弹性伸缩 选择弹性伸缩规则后,会在报警发生时触发相应的弹性伸缩规则。 日志服务 选择日志服务后,会在报警发生时将报警信息写入到日志服务。 邮件备注 自定义报警邮件补充信息,非必填项。填写后,报警邮件会包含您在此处填写的信息。 报警回调 云监控会将报警信息通过POST请求推送到您填写的公网URL地址,目前仅支持HTTP协议。 - 配置完成后,单击确认。
日累计SQL消费限制
setproject odps.costcontrol.rule={"byDate":{"sql":Limit}};
- byDate:日累计。以东八区时间为准,计算当日00:00:00~23:59:59期间的累计消费,第二天重新累计消费。
- Limit:Project标准SQL的日累计消费阈值,单位:元。此处统计的消费不含任何优惠和折扣。
说明 单SQL消费=扫描数据量(GB)×复杂度×0.3
setproject odps.costcontrol.rule={"byDate":{"sql":100}};
命令设置消费限制,当Project中的标准SQL日累计消费超出限制时,会报错,报错信息如下。 Exceed Cost Limit :
{"AlreadyCost":"100.1","InstanceId":"xxx","Limit":"100","Project":"xxx","TaskType":"SQL","ThisTaskWillCost":"0","TimeWindow":"BYDATE"}
建议您结合任务失败告警功能(例如DataWorks的智能监控)使用,您可以及时感知任务失败并进行人工干预处理,以免关键任务被限制后影响业务。
历史高额消费预警
- 登录阿里云用户中心。
- 单击高额消费预警。
- 选择预警产品并填写预警阈值,单击增加。
在文档使用中是否遇到以下问题
更多建议
匿名提交