赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 云服务器 ECS
  4. 操作指南
  5. 运维与监控
  6. 云助手
  7. 订阅云助手事件

订阅云助手事件

  • 云助手
  • 发布于 2025-04-01
  • 0 次阅读
文档编辑
文档编辑

云助手事件包括任务状态事件和心跳事件,您可以通过事件订阅获取任务执行状态和心跳上报,以优化云资源的管理和监控。本文介绍了云助手事件的功能,以及如何使用EventBridge和云监控订阅云助手事件。

云助手事件说明

云助手任务状态事件

事件描述

用户所运行的命令/脚本往往执行需要一定时间。云助手的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或云监控的配置是否正确。

  • 在使用EventBridge或云监控订阅事件时,考虑到可能的延迟和异步处理,务必设计好重试策略和异常处理机制,以便您的系统能够可靠地处理事件通知。

使用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. 配置事件目标,选择不同的服务类型,设置推送场景。

    更多推送场景说明,请参见设置推送场景。

使用云监控订阅云助手事件

  1. 登录云监控控制台。

  2. 在左侧导航栏,选择事件中心 > 事件订阅。

    说明

    您还可以通过系统事件菜单创建订阅策略,具体操作如下:

    1. 在左侧导航栏,选择事件中心 > 系统事件。

    2. 在欢迎体验新版事件中心区域,单击立即创建。

  3. 在订阅策略页签,单击创建订阅策略。

  4. 在创建订阅策略页面,设置订阅云助手事件的相关参数。

    本示例仅展示云助手事件的相关参数,更多参数说明,请参见订阅策略参数说明。

    • 订阅类型:选择系统事件。

    • 订阅范围:

      • 产品:选择云服务器ECS。

      • 事件类型:选择通知。

      • 事件名称:选择云助手首次心跳时间和云助手任务状态事件。

  5. 设置完成后,单击提交。

    当相关事件触发时,您会收到相关事件的通知。您也可以通过调用DescribeSystemEventAttribute查询系统事件详情。

相关文章

云助手概述 2025-04-01 12:00

云助手是专为云服务器ECS打造的原生自动化运维工具,免密码、免登录、无需使用跳板机,即可批量执行命令(Shell、PowerShell、Bat等),实现自动化运维脚本、轮询进程、安装卸载软件、启动或停止服务、安装补丁或安全更新等任务。

Cron表达式 2025-04-01 12:00

通过API或ECS控制台等执行云助手命令时,可基于Cron表达式设置云助手命令的定时执行计划。本文介绍Cron表达式的基本语法及其用法示例。 Cron表达式基本语法 Cron表达式是一种用于指定定时任务的时间表达式,常用来指定任务的执行时间、执行频率和执行间隔。它由6~7个字段组成,分别表示秒、分、

任务执行记录投递 2025-04-01 12:00

您可以使用云助手任务执行记录投递功能,将任务执行记录投递到对象存储OSS和日志服务SLS中,进行持久化存储。本文介绍如何通过云助手进行投递配置和查看已投递的执行记录文件。 背景信息 云助手支持保留执行记录

使用云助手插件 2025-04-01 12:00

云助手不仅能远程执行命令和上传文件,还提供了插件机制。通过云助手插件,您可以使用简单的命令完成复杂的配置操作,提升运维管理效率。 使用限制 下述版本的云助手Agent中已默认支持云助手插件,如果您需要使用云助手插件

会话操作记录投递 2025-04-01 12:00

您可以使用云助手的会话操作记录投递功能,将会话管理(Session Manager)操作记录投递到您的对象存储OSS或日志服务SLS中,进行持久化存储。本文介绍如何配置会话操作记录投递和查看已投递的会话操作记录。 背景信息 如果您需要对会话管理(Session Manager)操作记录进行查询、分析

管理云助手服务关联角色 2025-04-01 12:00

本文介绍如何通过云助手服务关联角色(AliyunServiceRoleForECSArchiving)授予云助手访问关联云资源的权限。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号