本文共 2365 字,大约阅读时间需要 7 分钟。
阿里云ECS在已有的系统事件的基础上,通过云监控新发布了状态变化类事件和抢占型实例的中断通知事件。利用这些新发布的事件,客户可以将ECS的完整生命周期实时的同步到自己的日志里或者数据库里,满足查询和审计的需要,或者直接触发函数计算进行一些自动化的运维操作。
关于ECS系统事件,请参阅文章
每当ECS实例的状态发生变化的时候,都会触发一条ECS实例状态变化事件。这种变化包括用户在控制台/OpenAPI/SDK操作导致的变化,也包括弹性伸缩或欠费等原因而自动触发的,还包括因为系统异常而触发的变化。
比如,当一个停止中的ECS实例被启动的时候,会触发一个“启动中”的事件。事件的格式遵循已有的云监控系统事件的格式,事件头会包含时间和唯一ID等信息,事件的完整格式如下:
{ "status": "Normal", "ver": "1.0", "content": { "resourceId": "i-xxxxxxxxxx", "state": "Starting", "resourceType": "ALIYUN::ECS::Instance" }, "id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx", "product": "ECS", "groupId": [ ], "resourceId": "acs:ecs:cn-xxxx:xxxxxxx:instance/i-xxxxxxxxxx", "level": "INFO", "instanceName": "", "name": "Instance:StateChange", "userId": "xxxxxxx", "eventTime": "20190130T112734.114+0800", "regionId": "cn-xxxx"}
ECS实例状态变化通知事件支持以下六种状态,详见。
状态名 | 控制台显示状态 |
Pending | 无(实例创建后,在进入运行中之前的状态) |
Starting | 启动中 |
Running | 运行中 |
Stopping | 停止中 |
Stopped | 已停止/已过期/即将过期/已锁定/欠费回收中/等待释放 |
Deleted | 无(实例已经被删除) |
抢占式实例因为资源供需关系发生变化等原因,存在被自动释放的可能。在释放前5分钟左右,会触发抢占式实例中断通知,您可以在收到该事件的时候为抢占式实例的释放提前做准备。
抢占式实例中断通知的事件格式与状态变化事件格式除了name和content字段外,其他格式相同。
{ "product": "ECS", "resourceId": "acs:ecs:cn-shanghai:xxxxxxx:instance/i-abcdef", "level": "WARN", "instanceName": "instanceName", "regionId": "cn-hangzhou", "name": "Instance:PreemptibleInstanceInterruption", "content": { "instanceId": "i-abcdef", "action": "delete" }, "status": "Normal", "eventTime": "20190130T112768.222+0800"}
导致抢占式实例进入待回收状态的原因,包括市场价格高于您的出价或者资源供需关系发生变化等,详见。
登陆云监控控制台,进入『事件监控』->『报警规则』->『系统事件』tab,点击『创建事件报警』按钮。
在创建/修改事件报警的对话框里,按以下内容配置事件筛选规则:
事件类型选择『系统事件』
产品类型选择『云服务器ECS』
二级事件类型选择“Status Notification”。
事件等级选择『全部级别』
事件名称选择“实例状态改变通知”或者“抢占式实例中断通知”,可以多选。
在报警方式里面,你可以配置短信/邮件/钉钉通知,或者将该类事件转发给消息队列,函数计算,或者回调某个URL。
Event的真正价值,在于用Event Driven的方式去触发自动化的业务逻辑,从而解放人力,甚至有可能基于Event诞生新的云产品。在此,我们给出三个典型的自动化场景。
如果你的ECS是需要一直保持开机状态来提供某种服务的,那么不论任何原因的关机都是一种异常。您可以考虑消费ECS的状态改变通知,当收到stopped的通知的时候,自动对ECS执行一个启动的命令。
比如,当ECS创建完成后,你可能需要在ECS上自动创建用户账户或者执行某个脚本。您可以考虑消费ECS的状态改变通知,当收到第一次running事件后,通过云助手执行一个脚本。
如果您的SLB负载均衡服务器后配置了多台抢占式实例作为后端服务器,又不想因为抢占式实例的突然释放而影响业务。那么,您可以考虑接收ECS的抢占式实例的中断通知。在抢占式实例被释放前5分钟左右,您将收到抢占式实例中断通知,此时您可以将该抢占式实例后端服务器从SLB中移出,并创建一个新的抢占式实例作为后端服务器加入SLB。
更详细的最佳实践文档以及示例代码,请参阅
转载地址:http://uzdxx.baihongyu.com/