事件通知是一種監控手段,會在伸縮組發生伸縮活動后發送消息到您指定的通知接收端,例如云監控系統事件、MNS隊列以及MNS主題,能夠幫助您及時掌握伸縮組內實例的動態變化,實時監控伸縮組的信息。本文為您介紹基于不同類型的事件通知方式配置事件通知功能的方法。
背景信息
事件通知功能支持如下11種事件通知類型(即伸縮活動類型)和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
伸縮組診斷
SCALING_GROUP_DIAGNOSE
部分成功的彈性擴張活動
AUTOSCALING:SCALE_OUT_WARN
部分成功的彈性收縮活動
AUTOSCALING:SCALE_IN_WARN
事件通知方式:當伸縮活動觸發事件通知功能時,事件通知功能需要將伸縮活動詳情上報給對應的事件通知接收端,支持發送消息到云監控系統事件、MNS隊列以及MNS主題三種方式,實現彈性伸縮的自動化管理。如需詳細了解云監控系統事件或輕量消息隊列(原 MNS)的更多信息,請參見云監控系統事件監控和什么是輕量消息隊列(原 MNS)。
說明您也可以設置消息接收通知功能,彈性伸縮支持通過短信、站內信以及郵件發送消息通知,但是需要您在接收到消息后自行手動處理彈性伸縮的事件結果(即擴縮容結果)。更多信息,請參見設置消息接收通知。
注意事項
每個伸縮組中,您最多可以創建6個事件通知。
如果當前伸縮組已配置事件通知功能,則不能設置消息接收通知功能。
如果伸縮組使用了新的事件通知功能,則伸縮組原有的配置報警觸發規則功能(非報警任務)將不再生效。
同一個伸縮組內已經使用過的通知接收端不能相同。例如,伸縮組云監控系統事件在同一個伸縮組中作為通知接收端只能出現一次。
如果選擇采用MNS主題的事件通知方式,您需要確定MNS主題必須和您的伸縮組在同一個地域下。
相比較云監控系統事件方式,輕量消息隊列(原 MNS)方式會收取相應的費用。
具體的收費標準,請參見消息服務收費詳情。
基于云監控系統事件配置事件通知功能
當伸縮組發生事件通知類型的伸縮活動時,事件通知功能會將伸縮活動詳情以系統事件的方式上報到云監控。當云監控系統事件觸發配置好的系統事件報警規則時,云監控會向報警規則中設置的聯系人組發送報警信息,您可以通過管理聯系人組的方式來管理您的伸縮活動詳情接收方。
創建伸縮組和伸縮配置。
您可以通過彈性伸縮控制臺或者調用API的方式創建伸縮組和伸縮配置。
彈性伸縮控制臺:具體操作,請參見配置伸縮組和創建伸縮配置(ECS實例)、創建伸縮配置(ECI實例)。
API:更多信息,請參見CreateScalingGroup和CreateScalingConfiguration。
創建云監控方式的事件通知。
您可以通過彈性伸縮控制臺或者調用API的方式創建事件通知功能。
彈性伸縮控制臺:具體操作,請參見配置事件通知。
API:更多信息,請參見CreateNotificationConfiguration。
觸發彈性伸縮的伸縮活動。
您可以通過報警任務、執行伸縮規則、實例健康檢查等方式觸發伸縮活動,本文以執行伸縮規則的方式為例來觸發伸縮活動,具體操作,請參見執行伸縮規則。
查看系統事件上報至云監控的結果。
查看系統事件的具體操作,請參見查看系統事件。其中,上報到云監控的系統事件包含以下主要信息:
事件名稱、事件等級、狀態信息
伸縮組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
:當前伸縮組的實例數量。
創建系統事件報警規則。
如果您希望云監控能夠進一步以短信、郵件或者釘釘的方式通知您事件詳情,您需要在云監控控制臺上為對應的系統事件創建報警規則。具體操作,請參見管理系統事件報警規則(舊版)。
彈性伸縮上報給云監控的系統事件等級分為信息、警告、嚴重三個等級,每個等級對應著不同的伸縮活動類型,對應關系如下所示:
系統事件等級
事件通知類型(伸縮活動類型)
信息
成功的彈性擴張活動
成功的彈性收縮活動
彈性伸縮組擴容伸縮活動開始
彈性伸縮組縮容伸縮活動開始
全部事件(上述事件的集合)
警告
拒絕彈性伸縮活動
定時任務到期提醒
部分成功的彈性擴張活動
部分成功的彈性收縮活動
全部事件(上述事件的集合)
嚴重
失敗的彈性擴張活動
失敗的彈性收縮活動
全部事件(上述事件的集合)
基于MNS隊列配置事件通知功能
當伸縮組發生對應事件類型的伸縮活動時,事件通知功能將伸縮活動詳情推送到對應的MNS隊列中。推薦您使用長輪詢的方式來消費MNS隊列中的信息獲取本次伸縮活動詳情,如果MNS隊列中的消息您只需要消費一次,那么您可以在消費完后刪除對應的MNS隊列消息。關于長輪詢的更多信息,請參見短輪詢和長輪詢。
創建伸縮組和伸縮配置。
您可以通過彈性伸縮控制臺或者調用API的方式創建伸縮組和伸縮配置。
彈性伸縮控制臺:具體操作,請參見配置伸縮組和創建伸縮配置(ECS實例)、創建伸縮配置(ECI實例)。
API:更多信息,請參見CreateScalingGroup和CreateScalingConfiguration。
創建MNS隊列。
您可以通過MNS控制臺或者調用API的方式創建MNS隊列。
MNS控制臺:具體操作,請參見創建隊列。
API:更多信息,請參見CreateQueue。
說明由于MNS隊列服務在部分地域暫時未開放,因此該部分地域下的伸縮組暫不支持將通知接收端設置為MNS隊列,具體請以MNS控制臺實際頁面支持的地域顯示為準。
創建彈性伸縮的MNS隊列方式的事件通知。
您可以通過彈性伸縮控制臺或者調用API的方式創建事件通知功能。
彈性伸縮控制臺:具體操作,請參見配置事件通知。
API:更多信息,請參見CreateNotificationConfiguration。
觸發彈性伸縮的伸縮活動。
您可以通過報警任務、執行伸縮規則、實例健康檢查等方式觸發伸縮活動,本文以執行伸縮規則的方式為例來觸發伸縮活動,具體操作,請參見執行伸縮規則。
查看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等方式來消費事件通知。
創建伸縮組和伸縮配置。
您可以通過彈性伸縮控制臺或者調用API的方式創建伸縮組和伸縮配置。
彈性伸縮控制臺:具體操作,請參見配置伸縮組和創建伸縮配置(ECS實例)、創建伸縮配置(ECI實例)。
API:更多信息,請參見CreateScalingGroup和CreateScalingConfiguration。
創建MNS主題。
您可以通過MNS控制臺或者調用API的方式創建MNS主題。
MNS控制臺:具體操作,請參見創建主題。
API:更多信息,請參見CreateTopic。
說明由于MNS主題服務在部分地域暫時未開放,因此該部分地域下的伸縮組暫不支持將通知接收端設置為MNS主題,具體請以MNS控制臺實際頁面支持的地域顯示為準。
為MNS主題創建訂閱。
MNS主題接收到消息以后并不能像MNS隊列一樣直接消費,您需要為MNS主題創建訂閱,您可以通過MNS控制臺或者調用API的方式創建訂閱。
創建訂閱完成后,當該MNS主題接收到消息后,會實時地將消息推送到對應的訂閱方。目前MNS主題支持HTTP、隊列、阿里短信以及郵箱幾種訂閱方式。
創建彈性伸縮的MNS主題方式的事件通知。
您可以通過彈性伸縮控制臺或者調用API的方式創建事件通知功能。
彈性伸縮控制臺:具體操作,請參見配置事件通知。
API:更多信息,請參見CreateNotificationConfiguration。
觸發彈性伸縮的伸縮活動。
您可以通過報警任務、執行伸縮規則、實例健康檢查等方式觸發伸縮活動,以執行伸縮規則的方式為例來觸發伸縮活動,具體操作,請參見執行伸縮規則。
當伸縮組觸發了事件通知配置的某個伸縮活動中時,設置好的事件通知功能就會將伸縮活動詳情推送到MNS主題,該主題接收到消息后,會將消息推送到MNS主題設置的訂閱端,訂閱端自行消費接收到的消息。