事件通知是一种监控手段,会在伸缩组发生伸缩活动后发送消息到您指定的通知接收端,例如云监控系统事件、MNS列队以及MNS主题,能够帮助您及时掌握伸缩组内实例的动态变化,实时监控伸缩组的信息。本文为您介绍基于不同类型的事件通知方式配置事件通知功能的方法。

背景信息

事件通知功能支持如下10种事件通知类型(即伸缩活动类型)和3种事件通知方式(即通知接收对象),更多信息,请参见事件通知概述创建事件通知

  • 事件通知类型:当您在创建事件通知时,需要设置触发事件通知对应的伸缩活动类型,主要包括如下几种类型:
    类型名称(弹性伸缩控制台) 类型名称(API)
    成功的弹性扩张活动 AUTOSCALING:SCALE_OUT_SUCCESS
    成功的弹性收缩活动 AUTOSCALING:SCALE_IN_SUCCESS
    失败的弹性扩张活动 AUTOSCALING:SCALE_OUT_ERROR
    失败的弹性收缩活动 AUTOSCALING:SCALE_IN_ERROR
    拒绝弹性伸缩活动 AUTOSCALING:SCALE_REJECT
    弹性伸缩组扩容伸缩活动开始 AUTOSCALING:SCALE_OUT_START
    弹性伸缩组缩容伸缩活动开始 AUTOSCALING:SCALE_IN_START
    定时任务到期提醒 AUTOSCALING:SCHEDULE_TASK_EXPIRING
    部分成功的弹性扩张活动 AUTOSCALING:SCALE_OUT_WARN
    部分成功的弹性收缩活动 AUTOSCALING:SCALE_IN_WARN
  • 事件通知方式:当伸缩活动触发事件通知功能时,事件通知功能需要将伸缩活动详情上报给对应的事件通知接收端,支持发送消息到云监控系统事件、MNS队列以及MNS主题3种方式,实现弹性伸缩的自动化管理。如需详细了解云监控系统事件和消息服务(MNS)的更多信息,请参见云监控系统事件监控什么是消息服务MNS
    说明 您也可以设置消息接收通知功能,弹性伸缩支持通过短信、站内信以及邮件发送消息通知,但是需要您在接收到消息后自行手动处理弹性伸缩的事件结果(即扩缩容结果),更多信息,请参见设置消息接收通知

注意事项

  • 每个伸缩组中,您最多可以创建6个事件通知。
  • 如果当前伸缩组已配置事件通知功能,则不能设置消息接收通知功能。
  • 如果伸缩组使用了新的事件通知功能,则伸缩组原有的配置报警触发规则功能(非报警任务)将不再生效。
  • 同一个伸缩组内已经使用过的通知接收端不能相同。例如,伸缩组云监控系统事件在同一个伸缩组中作为通知接收端只能出现一次。
  • 如果选择采用MNS主题的事件通知方式,您需要确定MNS主题必须和您的伸缩组在同一个地域下。
  • 相比较云监控系统事件方式,消息服务(MNS)方式会收取相应的费用。

    具体的收费标准请参见消息服务收费详情

基于云监控系统事件配置事件通知功能

当伸缩组发生事件通知类型的伸缩活动时,事件通知功能会将伸缩活动详情以系统事件的方式上报到云监控,云监控系统事件触发配置好的系统事件报警规则时,云监控会向报警规则中设置的联系人组发送报警信息,您可以通过管理联系人组的方式来管理您的伸缩活动详情接收方。

  1. 创建伸缩组和伸缩配置。
    您可以通过弹性伸缩控制台或者调用API的方式创建伸缩组和伸缩配置。
  2. 创建云监控方式的事件通知。
    您可以通过弹性伸缩控制台或者调用API的方式创建事件通知功能。
  3. 触发弹性伸缩的伸缩活动。
    您可以通过报警任务、执行伸缩规则、实例健康检查等方式触发伸缩活动,本文以执行伸缩规则的方式为例来触发伸缩活动,具体操作,请参见执行伸缩规则
  4. 查看系统事件上报至云监控的结果。
    查看系统事件的具体操作,请参见查看系统事件。其中,上报到云监控的系统事件包含以下主要信息:
    • 事件名称、事件等级、状态信息
    • 伸缩组ID
    • 伸缩活动详情
    伸缩活动详情以JSON的格式上报给云监控,以弹性伸缩组扩容伸缩活动成功为例,示例如下所示:
    {
        "cause":"A user changed the Desired Capacity, changing the Total Capacity from \"1\" to \"2\".",
        "description":"\"1\" ECS instances are added",
        "endTime":"2022-03-31T09:16:30.000Z",
        "expectNum":1,
        "instanceIds":["i-bp1dn0ktfed9o0ys****"],
        "requestId":"INNER_WP2BReMYw3Fdic7dmbp****",
        "scalingActivityId":"asa-bp1eig7303qrgcxu****",
        "startTime":"2022-03-31T09:16:04.000Z",
        "totalCapacity":2
    }
    上述示例的伸缩活动详情中各字段的含义如下所示:
    • cause:伸缩活动的起因。
    • description:伸缩活动的执行结果。
    • endTime:伸缩活动的结束时间。
    • expectNum:本次伸缩活动预计增加的实例个数,只有成功的伸缩活动才会有此参数。
    • instanceIds:本次伸缩活动实际成功增加的实例ID列表,只有成功的伸缩活动会有此参数。
    • requestId:本次伸缩活动请求ID。
    • scalingActivityId:本次伸缩活动的ID。
    • startTime:伸缩活动开始时间。
    • totalCapacity:当前伸缩组的实例数量。
  5. 创建系统事件报警规则。
    如果您希望云监控能够进一步以短信、邮件或者钉钉的方式通知您事件详情,您需要在云监控控制台上为对应的系统事件创建报警规则。具体操作,请参见创建系统事件报警规则
    弹性伸缩上报给云监控的系统事件等级分为信息、警告、严重三个等级,每个等级对应着不同的伸缩活动类型,对应关系如下所示:
    系统事件等级 事件通知类型(伸缩活动类型)
    信息
    • 成功的弹性扩张活动
    • 成功的弹性收缩活动
    • 弹性伸缩组扩容伸缩活动开始
    • 弹性伸缩组缩容伸缩活动开始
    • 全部事件(上述事件的集合)
    警告
    • 拒绝弹性伸缩活动
    • 定时任务到期提醒
    • 部分成功的弹性扩张活动
    • 部分成功的弹性收缩活动
    • 全部事件(上述事件的集合)
    严重
    • 失败的弹性扩张活动
    • 失败的弹性收缩活动
    • 全部事件(上述事件的集合)

基于MNS队列配置事件通知功能

当伸缩组发生对应事件类型的伸缩活动时,事件通知功能将伸缩活动详情推送到对应的MNS队列中。推荐您使用长轮询的方式来消费MNS队列中的信息获取本次伸缩活动详情,如果MNS队列中的消息您只需要消费一次,那么您可以在消费完后删除对应的MNS队列消息。关于长轮询的更多信息,请参见长轮询

  1. 创建伸缩组和伸缩配置。
    您可以通过弹性伸缩控制台或者调用API的方式创建伸缩组和伸缩配置。
  2. 创建MNS队列。
    您可以通过MNS控制台或者调用API的方式创建MNS队列。
    说明 由于MNS队列服务在部分地域暂时未开放,因此该部分地域下的伸缩组暂不支持将通知接受端设置为MNS队列,具体请以MNS控制台实际页面支持的地域显示为准。
  3. 创建弹性伸缩的MNS队列方式的事件通知。
    您可以通过弹性伸缩控制台或者调用API的方式创建事件通知功能。
  4. 触发弹性伸缩的伸缩活动。
    您可以通过报警任务、执行伸缩规则、实例健康检查等方式触发伸缩活动,本文以执行伸缩规则的方式为例来触发伸缩活动,具体操作,请参见执行伸缩规则
  5. 查看MNS队列中接收的消息信息。
    查看MNS队列中接收的消息信息,请参见接收消息或者ReceiveMessage。其中,接收到的消息详情包含以下主要信息:
    • 基础信息:消息ID、消息句柄、被消费次数、消费时间以及消息创建时间等。
    • 消息内容:消息原始内容、Base64解码后的消息内容以及消息MD5内容。
    伸缩活动详情以JSON的格式推送给MNS队列,该消息可被MNS自动消费。以弹性伸缩组扩容伸缩活动成功为例,示例如下所示:
    {
        "content":{
        "cause":"A user changed the Desired Capacity, changing the Total Capacity from \"0\" to \"1\".",
        "description":"\"1\" ECS instances are added",
        "endTime":"2022-04-01T03:59:55.000Z",
        "expectNum":1,
        "instanceIds":["i-bp1imzcyvwrz2kzx****"],
        "requestId":"INNER_cpaMr4xcLVSdq0CFMdz****",
        "scalingActivityId":"asa-bp1ekb3kyj2qx1gx****",
        "startTime":"2022-04-01T03:59:29.000Z",
        "totalCapacity":1
        },
        "event":"AUTOSCALING:SCALE_OUT_SUCCESS",
        "eventLevel":"INFO",
        "eventStatus":"normal",
        "product":"ESS",
        "regionId":"cn-hangzhou",
        "resourceArn":"acs:ess:cn-hangzhou:160998252992****:scalingGroup/asg-bp10uuhy2wbb2tip****",
        "userId":"160998252992****"
    }
    上述示例的伸缩活动详情中各字段的含义如下所示:
    • content包含了本次伸缩活动的详细信息,包括如下字段:
      • cause:伸缩活动的起因。
      • description:伸缩活动的执行结果。
      • endTime:伸缩活动的结束时间。
      • expectNum:本次伸缩活动预计增加的实例个数,只有成功的伸缩活动才会有此参数。
      • instanceIds:本次伸缩活动实际成功增加的实例ID列表,只有成功的伸缩活动会有此参数。
      • requestId:本次伸缩活动请求ID。
      • scalingActivityId:本次伸缩活动的ID。
      • startTime:伸缩活动开始时间。
      • totalCapacity:当前伸缩组的实例数量。
    • event:本次事件通知对应的伸缩活动类型,即事件通知支持的伸缩活动类型。
    • eventLevel:事件级别,目前分为INFO、WARN、CRITICAL三个级别,分别对应伸缩活动成功、伸缩活动拒绝、伸缩活动失败。
    • eventStatus:事件通知的运行状态。
    • product:云产品名称,即弹性伸缩。
    • resourceArn:伸缩组唯一标识符,包括了伸缩组所在的地域信息、所属的用户ID信息以及伸缩组ID信息。
    • regionId:伸缩组所在的地域ID信息。
    • userId:伸缩组所属的用户ID信息。

基于MNS主题配置事件通知功能

当伸缩组发生对应事件类型的伸缩活动时,事件通知功能将伸缩活动详情推送到MNS主题中。MNS主题作为接收对象,相比MNS队列作为接收端,可选择的信息消费方式更多,不仅支持MNS队列的消费方式,而且支持HTTP、移动推送等方式来消费事件通知。

  1. 创建伸缩组和伸缩配置。
    您可以通过弹性伸缩控制台或者调用API的方式创建伸缩组和伸缩配置。
  2. 创建MNS主题。
    您可以通过MNS控制台或者调用API的方式创建MNS主题。
    说明 由于MNS主题服务在部分地域暂时未开放,因此该部分地域下的伸缩组暂不支持将通知接受端设置为MNS主题,具体请以MNS控制台实际页面支持的地域显示为准。
  3. 为MNS主题创建订阅。
    MNS主题接收到消息以后并不能和MNS队列一样直接消费,您需要为MNS主题创建订阅,您可以通过MNS控制台或者调用API的方式创建订阅。
    创建订阅完成后,当该MNS主题接收到消息后,会实时地将消息推送到对应的订阅方。目前MNS主题支持HTTP队列阿里短信邮箱以及移动推送几种订阅方式。
  4. 创建弹性伸缩的MNS主题方式的事件通知。
    您可以通过弹性伸缩控制台或者调用API的方式创建事件通知功能。
  5. 触发弹性伸缩的伸缩活动。
    您可以通过报警任务、执行伸缩规则、实例健康检查等方式触发伸缩活动,以执行伸缩规则的方式为例来触发伸缩活动,具体操作,请参见执行伸缩规则
    当伸缩组触发了事件通知配置的某个伸缩活动中时,设置好的事件通知功能就会将伸缩活动详情推送到MNS主题,该主题接收到消息后,会将消息推送到MNS主题设置的订阅端,订阅端自行消费消息。