雲助手事件包括任務狀態事件和心跳事件,您可以通過事件訂閱擷取任務執行狀態和心跳上報,以最佳化雲資源的管理和監控。本文介紹了雲助手事件的功能,以及如何使用EventBridge和CloudMonitor訂閱雲助手事件。
雲助手事件說明
雲助手任務狀態事件
事件描述
使用者所啟動並執行命令/指令碼往往執行需要一定時間。雲助手的RunCommand/InvokeCommand介面為非同步介面,調用之後,需要輪詢DescribeInvocations/DescribeInvocationResults介面查詢任務完成狀態,直至該任務完成。
雲助手任務狀態事件用於加強對任務完成情況的感知,您可以利用該事件達到以下目的:
在任務失敗或任務處於完成狀態時,獲得通知,以便設定警示、處理任務等。
使用輪詢會佔用使用者的API調用額度,通過事件訂閱的方式可以避免該問題。
輪詢的過程較長,容易被應用發布所打斷。使用事件規避狀態打斷,可以降低使用者的複雜度。
事件觸發條件&限制
事件觸發條件:使用者使用RunCommand/InvokeCommand觸發任務執行,雲助手內部監聽任務完成狀態,處於完成狀態的任務則發出該事件。
事件使用限制:
僅在雲助手在執行個體上的任務執行狀態(InvocationStatus)變為以下狀態時,才會觸發發送事件。
Aborted:任務下發失敗
Success:任務執行成功
Failed:任務執行失敗
Invalid:任務內容非法
Timeout:任務執行逾時
Cancelled:任務執行取消
Terminated:任務執行被終止
在OpenAPI(DescribeInvocations/DescribeInvocationResults)中,事件查詢的返回資料格式為
array<object>
。在本事件中,上報的是一個任務在單個執行個體上的執行狀態,而不是多個任務。
事件欄位說明
欄位 | 說明 | 樣本值 |
instanceId | 執行個體ID。 | i-bp114*************** |
invokeId | 命令執行ID。 | t-hz045********** |
commandId | 命令ID。 | c-hz045********** |
commandName | 命令名稱。 | ACS-ECS-ResetPassword-for-linux.sh |
ownerUid | 執行命令的執行個體歸屬帳號。 | 158************* |
playerUid | 角色扮演者帳號ID。 | 256*************** |
repeatMode | 命令執行的方式。如果同時設定了InstanceId參數,則不生效。取值範圍:
| Once |
repeats | 命令在該執行個體上執行的次數。
| 0 |
invocationStatus | 命令執行的狀態。
| Success |
exitCode | 命令進程的退出碼。 | 0 |
startTime | 任務開始時間。 | 2023-12-20T06:15:55Z |
finishTime | 任務結束時間。 | 2023-12-20T06:15:59Z |
errorCode | 命令下發失敗或執行失敗原因code。 | 0 |
errorDesc | 命令下發失敗或執行失敗的原因詳情。 | - |
雲助手首次心跳事件
事件描述
雲助手的心跳是判定GuestOS(執行個體作業系統)狀態的手段之一。其中,首次心跳可以用來判斷GuestOS真正啟動的時間,作為執行個體健康狀態、下發雲助手命令等情境的參考。
相比通過輪詢DescribeCloudAssistantStatus的方式查看心跳是否上報,雲助手首次心跳事件可以規避以下問題:
輪詢查詢DescribeCloudAssistantStatus狀態是否變為true,實現比較複雜。如果間隔不當,可能產生過多請求,造成流控或對系統造成壓力。
由於GuestOS真正的啟動時間差別較大,部分Windows執行個體偶爾需要5分鐘才能啟動完成,輪詢不容易控制總時間長度。
DescribeCloudAssistantStatus對狀態的判斷有一定的滯後性,從有心跳到無心跳會有2分鐘的滯後,所以對於重啟執行個體的情境,DescribeCloudAssistantStatus不容易識別。
事件觸發條件&限制
事件觸發條件:在雲助手心跳上報時,通過內部index識別,當判定為首次心跳時觸發事件,由雲助手服務端發送雲助手用戶端啟動後的首次心跳事件。
雲助手版本限制:
Windows執行個體:雲助手版本必須高於1.0.0.149。
Linux執行個體:雲助手版本必須高於1.0.2.569。
低版本雲助手不會通過每分鐘一次的心跳上報介面上報心跳,或不會上報index欄位,因此不能準確識別出啟動後的首次心跳,暫時不對這些低版本做支援。
事件欄位說明
欄位 | 說明 | 樣本值 |
bizEventId | 事件ID。 | ea33c3e2-aaf0-****-****-5d49b1ecce99 |
vmName | 事件關聯的執行個體ID。 | i-bp19**************** |
extensions | 業務擴充資訊。 | - |
azone | 可用性區域。 | cn-shenzhen-e |
region | 地區。 | cn-shenzhen |
agentVersion | 雲助手Agent版本。 | 2.2.3.529 |
uptime | 作業系統已啟動的時間(毫秒) | 19000 |
訂閱雲助手事件
為了確保事件順利訂閱和接收,建議您在設定時仔細閱讀各介面和服務的文檔,瞭解最佳實務。
如果遇到訂閱失敗或未能按預期接收事件的情況,請檢查雲助手的版本是否滿足觸發事件的條件,並檢查EventBridge或CloudMonitor的配置是否正確。
在使用EventBridge或CloudMonitor訂閱事件時,考慮到可能的延遲和非同步處理,務必設計好重試策略和異常處理機制,以便您的系統能夠可靠地處理事件通知。
使用EventBridge訂閱雲助手事件
操作前,請確認您已開通事件匯流排EventBridge服務並完成授權,具體操作,請參見開通事件匯流排EventBridge並授權。
登入事件匯流排EventBridge控制台,在左側導覽列,單擊事件匯流排。
在頂部功能表列,選擇地區。
在事件匯流排頁面,單擊default。
在事件匯流排頁面,單擊左側導覽列的事件規則,然後單擊建立規則。
在配置基本資料頁簽,在名稱文字框輸入規則名稱,在描述文字框輸入規則的描述,然後單擊下一步。
在配置事件模式頁簽,完成以下配置,然後單擊下一步。
單擊阿裡雲官方事件源頁簽。
在事件來源下拉式清單中選擇acs.ecs。
在事件類型下拉式清單中選擇需要訂閱的雲助手事件類型。
雲助手首次心跳事件:
ecs:CloudAssistant:FirstHeartbeat
雲助手任務狀態事件:
ecs:CloudAssistant:TaskCompleted
在事件模式調試中,查看訂閱的事件類型的樣本。
在樣本下方,單擊測試類比事件觸發。如果顯示匹配通過,事件可正常被觸發,表示事件可正常觸發。
配置事件目標,選擇不同的服務類型,設定推送情境。
更多推送情境說明,請參見設定推送情境。
使用CloudMonitor訂閱雲助手事件
在左側導覽列,選擇 。
說明您還可以通過系統事件菜單建立訂閱策略,具體操作如下:
在左側導覽列,選擇
。在歡迎體驗新版事件中心地區,單擊立即建立。
在訂閱策略頁簽,單擊建立訂閱策略。
在建立訂閱策略頁面,設定訂閱雲助手事件的相關參數。
本樣本僅展示雲助手事件的相關參數,更多參數說明,請參見訂閱策略參數說明。
訂閱類型:選擇系統事件。
訂閱範圍:
產品:選擇Elastic Compute Service。
事件類型:選擇通知。
事件名稱:選擇雲助手首次心跳時間和雲助手任務狀態事件。
設定完成後,單擊提交。
當相關事件觸發時,您會收到相關事件的通知。您也可以通過調用DescribeSystemEventAttribute查詢系統事件詳情。