本文介绍弹性保障和容量预定的系统事件类型及事件内容,帮助您及时感知私有池容量变化并采取应对措施。
背景信息
弹性保障(EA)和容量预定(CR)通过预留私有池资源,为按量付费实例提供容量保障。在使用过程中,私有池可能因底层系统异常等原因出现容量失效,导致部分预留容量暂时无法用于创建实例。
为帮助您实时感知私有池容量状态变化并及时采取应对措施,ECS 通过云监控(CloudMonitor)提供以下三类资源预定系统事件:
私有池状态变化事件:当私有池的生命周期状态发生变更时触发。
私有池总容量变更已生效事件:当私有池的总容量(TotalCapacity)发生变化时触发。
私有池可用容量失效事件:当私有池的可用容量因系统异常而失效或恢复时触发。
事件类型概览
事件名称 | 事件代码 | 事件等级 | 说明 |
私有池状态变化 |
| 通知(INFO) | 私有池生命周期状态发生变更,例如从准备中变为已生效、已失效或已过期等。 |
私有池总容量变更已生效 |
| 通知(INFO) | 私有池总容量发生变化,包括升配、降配或因系统异常导致的容量调整。 |
私有池可用容量失效 |
| 严重(CRITICAL) | 私有池部分可用容量因系统异常失效,正在修复中。 |
私有池可用容量恢复 |
| 严重(CRITICAL) | 私有池可用容量已恢复正常。 |
私有池状态变化事件
当弹性保障或容量预定的私有池生命周期状态发生变更时,系统会发送 EcsPrivatePool:StateChange 事件。
状态说明
状态值 | 说明 |
| 初始化。指定时间生效的容量预定会先进入初始化状态。 |
| 准备中。指定时间生效的容量预定在资源交付进行阶段,处于准备中状态。 |
| 待生效。指定时间生效的容量预定在资源交付完成,服务正式生效之前,处于待生效状态。 |
| 生效中。私有池处于生效状态,可用于创建实例。 |
| 已释放,包括手动释放与到期自动释放。 |
状态流转图
下图展示了弹性保障(EA)的完整生命周期状态流转:
事件内容示例
{
"product": "ecsprivatepool",
"level": "INFO",
"resourceId": "acs:ecs:cn-hangzhou:175201********98:ALIYUN::ECS::capacityreservation/crp-bp10dr968********v7",
"instanceName": "crp-bp10dr968********v7",
"regionId": "cn-hangzhou",
"name": "EcsPrivatePool:StateChange",
"status": "Executed",
"content": {
"resourceId": "crp-bp10dr968********v7",
"eventStatus": "Executed",
"resourceType": "ALIYUN::ECS::capacityreservation",
"status": "Pending"
},
"id": "ad84c99d-00d0-4a05-9a2a-2d********cf"
}字段 | 类型 | 说明 |
| String | 私有池 ID。 |
| String | 事件状态。 |
| String | 资源类型。 |
| String | 变更后的私有池状态。 |
私有池总容量变更已生效事件
当弹性保障或容量预定的总容量发生变化时,系统会发送 EcsPrivatePool:TotalCapacityChange 事件。
变更原因说明
原因类型 | 说明 | 示例场景 |
| 私有池升配,总容量增加。 | 修改弹性保障,将预留实例数从 10 增加到 20。 |
| 私有池降配,总容量减少。 | 修改弹性保障,将预留实例数从 20 减少到 10。 |
| 因底层系统故障导致容量丢失,且超过 36 小时无法恢复时,系统主动缩减总容量。 | 底层硬件异常导致部分容量长时间无法恢复,系统自动调整总容量。 |
事件内容示例
{
"product": "ecsprivatepool",
"level": "INFO",
"resourceId": "acs:ecs:cn-hangzhou:1752019********98:ALIYUN::ECS::capacityreservation/crp-bp10dr968********v7",
"instanceName": "crp-bp10dr968********v7",
"regionId": "cn-hangzhou",
"name": "EcsPrivatePool:TotalCapacityChange",
"status": "Executed",
"content": {
"reason": "upgrade",
"resourceId": "crp-bp10dr968********v7",
"preTotalCapacity": 1,
"totalCapacity": 2,
"eventStatus": "Executed",
"resourceType": "ALIYUN::ECS::capacityreservation"
},
"id": "5ab93918-66a7-4d23-9c16-7b********18"
}字段 | 类型 | 说明 |
| String | 变更原因,取值包括 |
| String | 私有池 ID。 |
| Integer | 变更后的总容量(实例个数)。 |
| Integer | 变更前的总容量(实例个数)。 |
私有池可用容量失效事件
当私有池的可用容量因系统异常无法正常使用时,系统会发送 EcsPrivatePool:AvailableCapacityFailure 事件。
什么是容量失效
容量失效是指私有池中尚未使用的预留容量因底层系统异常等原因,暂时无法用于创建实例的情况。失效期间:
私有池中已创建的实例不受影响,仍可正常运行。
使用失效容量创建新实例可能会失败。
系统会自动尝试恢复失效容量。
容量失效的触发与恢复
失效触发条件
使用私有池的预留容量创建实例失败,且失败原因为库存不足(非磁盘不足、配额限制、配置错误等原因),系统将判定对应的剩余容量为失效状态。
恢复条件(满足以下任一条件即恢复)
使用该私有池的预留容量成功创建实例。
连续 15 分钟内无新的使用预留容量创建实例的失败请求。
如果容量失效持续超过 36 小时仍无法恢复,系统将主动缩减私有池总容量并发送总容量变更已生效事件(EcsPrivatePool:TotalCapacityChange),变更原因为 systemError。
事件状态
事件代码 | 事件状态 | 说明 |
| Executing(执行中) | 私有池容量部分失效中,系统正在尝试恢复。 |
| Executed(已完成) | 私有池可用容量已恢复正常。 |
事件内容示例
容量失效中(Executing)
{
"product": "ecsprivatepool",
"resourceId": "acs:ecs:cn-hangzhou:175201********98:ALIYUN::ECS::elasticityassurance/eap-bp15ooknae********u0",
"level": "CRITICAL",
"instanceName": "eap-bp15ooknae********u0",
"regionId": "cn-hangzhou",
"name": "EcsPrivatePool:AvailableCapacityFailure:Executing",
"content": {
"eventStatus": "Executing",
"failedCapacity": 10,
"resourceId": "eap-bp15ooknae********u0",
"resourceType": "ALIYUN::ECS::elasticityassurance",
"totalCapacity": 13
},
"id": "4565c58f-0819-4d96-9d7d-c5********7e"
}容量失效已恢复(Executed)
{
"product": "ecsprivatepool",
"resourceId": "acs:ecs:cn-hangzhou:175201********98:ALIYUN::ECS::elasticityassurance/eap-bp15ooknae********u0",
"level": "CRITICAL",
"instanceName": "eap-bp15ooknae********u0",
"regionId": "cn-hangzhou",
"name": "EcsPrivatePool:AvailableCapacityFailure:Executed",
"content": {
"eventStatus": "Executed",
"failedCapacity": 0,
"resourceId": "eap-bp15ooknae********u0",
"resourceType": "ALIYUN::ECS::elasticityassurance",
"totalCapacity": 13
},
"id": "411937f4-333c-4bb8-8175-c35********f5"
}字段 | 类型 | 说明 |
| Integer | 当前失效的容量数(实例个数)。恢复后该值为 0。 |
| Integer | 私有池总容量(实例个数)。 |
| String | 事件状态。 |
容量指标说明
弹性保障和容量预定的查询接口返回以下容量指标,帮助您全面了解私有池容量状态。
指标名称 | 说明 | 对应 vCPU 指标 |
| 私有池总容量(实例个数)。 |
|
| 已使用的容量(已创建实例数量)。 |
|
| 当前可用于创建实例的容量。已排除失效容量和锁定容量。 |
|
| 剩余未使用的容量总数,包括可用容量、锁定容量和失效容量。 |
|
| 锁定中的容量,例如释放裸金属或本地盘实例后的资源回补期间。 |
|
| 因系统异常导致的失效容量。 |
|
计算规则
各指标之间的关系如下:
TotalCapacity=UsedCapacity+RemainCapacityRemainCapacity=AvailableCapacity+LockedCapacity+FailedCapacity
不同场景下的指标表现:
场景 | 指标关系 |
正常运行 |
|
资源释放后处于锁定期(裸金属、本地盘等特殊规格) |
|
容量失效 |
|
容量变更与失效示意图
下图展示了总容量变更和容量失效恢复的典型场景:
查看资源预定事件
您可以通过以下方式查看资源预定的系统事件。
通过云监控控制台查看
产品选择ECS 私有资源池。
事件名称选择目标事件,例如私有池状态变化事件。
设置时间范围,查看对应时段内的事件记录。
通过 API 查看
调用云监控的 DescribeSystemEventAttribute 接口查询事件。示例如下:
aliyun cms DescribeSystemEventAttribute \
--Product ECS \
--EventType EcsPrivatePool:AvailableCapacityFailure:Executing提高资源预定可靠性
为提高资源预定的使用可靠性,建议您采取以下措施:
配置事件告警:通过云监控为
EcsPrivatePool:AvailableCapacityFailure事件配置告警通知,以便在容量失效时及时获知。监控容量指标:定期通过
DescribeElasticityAssurances或DescribeCapacityReservations接口查询私有池的AvailableCapacity和FailedCapacity,及时发现容量异常。多可用区冗余设计:在多个可用区分别购买弹性保障或容量预定,当某个可用区出现容量失效时,可将业务切换到其他可用区的私有池。
结合弹性伸缩使用:配置弹性伸缩组的资源池策略为私有池优先,当指定私有池容量不足时自动匹配其他可用私有池或公共池。
自动化响应:结合事件总线(EventBridge)或消息服务(MNS)订阅容量失效事件,自动触发实例创建重试或切换逻辑。