全部產品
Search
文件中心

Elastic Compute Service:使用EventBridge和CloudMonitor訂閱雲助手事件

更新時間:Dec 13, 2024

雲助手事件包括任務狀態事件和心跳事件,您可以通過事件訂閱擷取任務執行狀態和心跳上報,以最佳化雲資源的管理和監控。本文介紹了雲助手事件的功能,以及如何使用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:立即執行命令。

  • Period:定時執行命令。

  • NextRebootOnly:當執行個體下一次啟動時,自動執行命令。

  • EveryReboot:執行個體每一次啟動都將自動執行命令。

Once

repeats

命令在該執行個體上執行的次數。

  • 若執行方式為立即執行,則值為0或1。

    • 0:命令下發失敗,命令指令碼未啟動執行。

    • 1:命令下發成功,命令第一次在此執行個體上執行。

  • 若執行方式為定時執行,則值為執行過多少次。

0

invocationStatus

命令執行的狀態。

  • Invalid:指定命令類型或參數錯誤。

  • Aborted:向執行個體發送命令失敗。執行個體必須在運行中,且命令可以在1分鐘內發送完成。

  • Success:

    • 單次執行的命令:命令執行完成,且退出碼為0。

    • 定時執行的命令:上一次執行成功且退出碼為0,且指定的執行時間已結束。

  • Failed:

    • 單次執行的命令:命令執行完成,且退出碼非0。

    • 定時執行的命令:上一次執行成功且退出碼非0,且指定的執行時間將被中止。

  • Timeout:命令執行逾時。

  • Cancelled:命令的執行動作已經取消,命令未曾啟動。

  • Terminated:命令執行時被終止。

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並授權

  1. 登入事件匯流排EventBridge控制台,在左側導覽列,單擊事件匯流排

  2. 在頂部功能表列,選擇地區。

  3. 事件匯流排頁面,單擊default

  4. 事件匯流排頁面,單擊左側導覽列的事件規則,然後單擊建立規則

  5. 配置基本資料頁簽,在名稱文字框輸入規則名稱,在描述文字框輸入規則的描述,然後單擊下一步

  6. 配置事件模式頁簽,完成以下配置,然後單擊下一步

    1. 單擊阿裡雲官方事件源頁簽。

    2. 事件來源下拉式清單中選擇acs.ecs

    3. 事件類型下拉式清單中選擇需要訂閱的雲助手事件類型。

      1. 雲助手首次心跳事件:ecs:CloudAssistant:FirstHeartbeat

      2. 雲助手任務狀態事件:ecs:CloudAssistant:TaskCompleted

    4. 事件模式調試中,查看訂閱的事件類型的樣本。

      查看雲助手事件樣本

      雲助手任務狀態事件

      {
          "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
          "source": "acs.ecs",
          "specversion": "1.0",
          "subject": "acs.ecs:cn-hangzhou:123456789098****:215672",
          "time": "2020-11-19T21:04:41+08:00",
          "type": "ecs:CloudAssistant:TaskCompleted",
          "aliyunaccountid": "123456789098****",
          "aliyunpublishtime": "2020-11-19T21:04:42Z",
          "aliyuneventbusname": "default",
          "aliyunregionid": "cn-hangzhou",
          "aliyunpublishaddr": "172.25.XX.XX",
          "data": {
              "commandId": "c-hz045**********",
              "commandName": "hello-linux.sh",
              "exitCode": "0",
              "finishTime": "2023-12-14T07:39:48Z",
              "instanceId": "i-bp114***************",
              "invocationStatus": "Success",
              "invokeId": "t-hz045**********",
              "ownerId": "158*************",
              "playerUid": "256***************",
              "repeatMode": "Once",
              "repeats": "1",
              "startTime": "2023-12-14T07:39:48Z",
              "errorCode": "0",
              "errorDesc": ""
          }
      }

      雲助手首次心跳事件

      {
          "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
          "source": "acs.ecs",
          "specversion": "1.0",
          "subject": "acs.ecs:cn-hangzhou:123456789098****:215672",
          "time": "2020-11-19T21:04:41+08:00",
          "type": "ecs:CloudAssistant:FirstHeartbeat",
          "aliyunaccountid": "123456789098****",
          "aliyunpublishtime": "2020-11-19T21:04:42Z",
          "aliyuneventbusname": "default",
          "aliyunregionid": "cn-hangzhou",
          "aliyunpublishaddr": "172.25.XX.XX",
          "data": {
              "bizEventId": "ea33c3e2-aaf0-****-****-5d49b1ecce99",
              "extensions": {
                  "agentVersion": "2.2.3.529",
                  "region": "cn-hangzhou",
                  "azone": "cn-hangzhou-k",
                  "uptime": "19000"
              },
              "impact": "Alert",
              "opsCode": "InstanceStatusChange",
              "vmName": "i-bp19****************"
          }
      }

    5. 在樣本下方,單擊測試類比事件觸發。如果顯示匹配通過,事件可正常被觸發,表示事件可正常觸發。

  7. 配置事件目標,選擇不同的服務類型,設定推送情境。

    更多推送情境說明,請參見設定推送情境

使用CloudMonitor訂閱雲助手事件

  1. 登入CloudMonitor控制台

  2. 在左側導覽列,選擇事件中心 > 事件訂閱

    說明

    您還可以通過系統事件菜單建立訂閱策略,具體操作如下:

    1. 在左側導覽列,選擇事件中心 > 系統事件

    2. 歡迎體驗新版事件中心地區,單擊立即建立

  3. 訂閱策略頁簽,單擊建立訂閱策略

  4. 建立訂閱策略頁面,設定訂閱雲助手事件的相關參數。

    本樣本僅展示雲助手事件的相關參數,更多參數說明,請參見訂閱策略參數說明

    • 訂閱類型:選擇系統事件

    • 訂閱範圍

      • 產品:選擇Elastic Compute Service

      • 事件類型:選擇通知

      • 事件名稱:選擇雲助手首次心跳時間雲助手任務狀態事件

  5. 設定完成後,單擊提交

    當相關事件觸發時,您會收到相關事件的通知。您也可以通過調用DescribeSystemEventAttribute查詢系統事件詳情。