阿裡雲ECS在已有的系統事件的基礎上,通過雲監控新釋出了狀态變化類事件和搶占型執行個體的中斷通知事件。利用這些新釋出的事件,客戶可以将ECS的完整生命周期實時的同步到自己的日志裡或者資料庫裡,滿足查詢和審計的需要,或者直接觸發函數計算進行一些自動化的運維操作。
關于ECS系統事件,請參閱文章
讓運維更高效:關于ECS系統事件https://www.atatech.org/articles/129235?msgid=2650066#0 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 | 無(執行個體已經被删除) |
https://www.atatech.org/articles/129235?msgid=2650066#1 搶占式執行個體中斷通知
搶占式執行個體因為資源供需關系發生變化等原因,存在被自動釋放的可能。在釋放前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"
}
導緻搶占式執行個體進入待回收狀态的原因,包括市場價格高于您的出價或者資源供需關系發生變化等,詳見
https://www.atatech.org/articles/129235?msgid=2650066#2 雲監控控制台使用新增事件
登陸雲監控控制台,進入『事件監控』->『報警規則』->『系統事件』tab,點選『建立事件報警』按鈕。

在建立/修改事件報警的對話框裡,按以下内容配置事件篩選規則:
事件類型選擇『系統事件』
産品類型選擇『雲伺服器ECS』
二級事件類型選擇“Status Notification”。
事件等級選擇『全部級别』
事件名稱選擇“執行個體狀态改變通知”或者“搶占式執行個體中斷通知”,可以多選。
在報警方式裡面,你可以配置短信/郵件/釘釘通知,或者将該類事件轉發給消息隊列,函數計算,或者回調某個URL。
https://www.atatech.org/articles/129235?msgid=2650066#3 新增事件的使用場景
Event的真正價值,在于用Event Driven的方式去觸發自動化的業務邏輯,進而解放人力,甚至有可能基于Event誕生新的雲産品。在此,我們給出三個典型的自動化場景。
https://www.atatech.org/articles/129235?msgid=2650066#4 場景1: Auto-Start ECS
如果你的ECS是需要一直保持開機狀态來提供某種服務的,那麼不論任何原因的關機都是一種異常。您可以考慮消費ECS的狀态改變通知,當收到stopped的通知的時候,自動對ECS執行一個啟動的指令。
https://www.atatech.org/articles/129235?msgid=2650066#5 場景2: ECS建立完成後的初始化
比如,當ECS建立完成後,你可能需要在ECS上自動建立使用者賬戶或者執行某個腳本。您可以考慮消費ECS的狀态改變通知,當收到第一次running事件後,通過雲助手執行一個腳本。
https://www.atatech.org/articles/129235?msgid=2650066#6 場景3: ECS搶占式執行個體釋放前自動從SLB後端伺服器中移出
如果您的SLB負載均衡伺服器後配置了多台搶占式執行個體作為後端伺服器,又不想因為搶占式執行個體的突然釋放而影響業務。那麼,您可以考慮接收ECS的搶占式執行個體的中斷通知。在搶占式執行個體被釋放前5分鐘左右,您将收到搶占式執行個體中斷通知,此時您可以将該搶占式執行個體後端伺服器從SLB中移出,并建立一個新的搶占式執行個體作為後端伺服器加入SLB。
更詳細的最佳實踐文檔以及示例代碼,請參閱
ECS狀态變化事件的自動化運維最佳實踐