阿里云新发布ECS状态变化类事件

  阿里云ECS在已有的系统事件的基础上,通过云监控新发布了状态变化类事件和抢占型实例的中断通知事件。利用这些新发布的事件,客户可以将ECS的完整生命周期实时的同步到自己的日志里或者数据库里,满足查询和审计的需要,或者直接触发函数计算进行一些自动化的运维操作。

  关于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状态变化类事件

  在创建/修改事件报警的对话框里,按以下内容配置事件筛选规则:

  事件类型选择『系统事件』

  产品类型选择『云服务器ECS』

  二级事件类型选择“Status Notification”。

  事件等级选择『全部级别』

  事件名称选择“实例状态改变通知”或者“抢占式实例中断通知”,可以多选。

  在报警方式里面,你可以配置短信/邮件/钉钉通知,或者将该类事件转发给消息队列,函数计算,或者回调某个URL。

阿里云新发布ECS状态变化类事件

新增事件的使用场景

  Event的真正价值,在于用Event Driven的方式去触发自动化的业务逻辑,从而解放人力,甚至有可能基于Event诞生新的云产品。在此,我们给出三个典型的自动化场景。

场景1: Auto-Start ECS

如果你的ECS是需要一直保持开机状态来提供某种服务的,那么不论任何原因的关机都是一种异常。您可以考虑消费ECS的状态改变通知,当收到stopped的通知的时候,自动对ECS执行一个启动的命令。

场景2: ECS创建完成后的初始化

比如,当ECS创建完成后,你可能需要在ECS上自动创建用户账户或者执行某个脚本。您可以考虑消费ECS的状态改变通知,当收到第一次running事件后,通过云助手执行一个脚本。

场景3: ECS抢占式实例释放前自动从SLB后端服务器中移出

如果您的SLB负载均衡服务器后配置了多台抢占式实例作为后端服务器,又不想因为抢占式实例的突然释放而影响业务。那么,您可以考虑接收ECS的抢占式实例的中断通知。在抢占式实例被释放前5分钟左右,您将收到抢占式实例中断通知,此时您可以将该抢占式实例后端服务器从SLB中移出,并创建一个新的抢占式实例作为后端服务器加入SLB。

 

更详细的最佳实践文档以及示例代码,请参阅ECS状态变化事件的自动化运维最佳实践

上一篇:《树莓派Python编程入门与实战》——1.3 哪些树莓派外设是必须的


下一篇:android横竖屏切换activity生命周期变化