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

背景信息

云助手支持保留执行记录,但保留时长和条数均存在限制,更多信息,请参见云助手使用限制。如果您需要长时间或大量保留执行记录,建议使用运维任务执行记录投递功能,以便对运维任务执行记录进行查询、行为或安全分析、资源变更行为追踪和行为合规性审计等操作。

运维任务执行记录投递功能的使用流程如下:
  1. 完成投递配置,指定存储执行记录的SLS项目(Project)和日志库(LogStore)、OSS存储空间(Bucket)。

    具体操作,请参见在ECS进行运维任务执行记录投递的配置

  2. 执行命令或发送文件,执行记录会自动投递至您指定的SLS日志库或OSS存储空间中。

    具体操作,请参见立即执行命令执行命令上传本地文件到ECS实例

  3. 前往SLS控制台或OSS控制台查看执行记录。

    具体操作,请参见在SLS查看运维任务执行记录在OSS查看运维任务执行记录

在ECS进行运维任务执行记录投递的配置

  1. 登录ECS管理控制台
  2. 在左侧导航栏,单击发送命令/文件(云助手)
  3. 在顶部菜单栏左上角处,选择地域。
    说明 不支持跨地域投递,请为需要投递执行记录的地域分别完成配置。
  4. ECS云助手页面的右上角,单击操作内容与结果投递
  5. 操作内容与结果投递对话框,完成投递配置。
    delivery-settings
    说明 首次进行投递配置时,系统自动授权云助手获取访问SLS和OSS资源的权限,以便将运维任务执行记录投递到您指定的SLS日志库或OSS存储空间中。您可以手动管理授权,具体操作,请参见运维任务执行记录投递服务关联角色
    1. 选中投递到日志服务SLS,然后选择已创建的SLS项目和日志库。
      如果还未创建SLS项目和日志库,请单击右侧的打开SLS控制台管理日志库开始即时创建,创建完成后返回该对话框单击refresh图标,查看最新的列表。具体操作,请参见管理Project管理Logstore

      在SLS中查询、分析日志还需要提前开启索引,具体操作,请参见配置索引

      注意 运维任务执行记录投递功能本身不收费,但使用SLS的日志库索引等功能时会产生流量,您需要为此付费,更多信息,请参见日志服务SLS计费概述
    2. 选中投递到对象存储OSS,然后选择已创建的OSS存储空间,并填写用于存储执行记录文件的根目录。
      如果还未创建OSS存储空间,请单击右侧的打开OSS控制台开始即时创建,创建完成后返回该对话框单击refresh图标,查看最新的列表。具体操作,请参见创建存储空间
      注意 运维任务执行记录投递功能本身不收费,但使用OSS的文件管理等功能时会产生流量,您需要为此付费,更多信息,请参见对象存储OSS计费概述
    3. 单击确定

在SLS查看运维任务执行记录

本步骤为从ECS控制台跳转至指定日志库的方法,您也可以直接登录SLS控制台,自行查找对应的日志库。

  1. 登录ECS管理控制台
  2. 在左侧导航栏,单击发送命令/文件(云助手)
  3. 在顶部菜单栏左上角处,选择地域。
  4. ECS云助手页面的右上角,单击操作内容与结果投递
  5. 操作内容与结果投递对话框,单击请选择日志服务日志库区域右侧的管理日志库
    查看日志的相关操作说明,请参见查询和分析日志
    云助手的运维任务执行记录日志示例如下所示,具体参数的含义,请参见运维任务执行记录的参数
    • 单次执行命令once
    • 周期执行命令

      其中Repeats对应的值为已经执行该命令的次数。

      sls-timed
    • 发送文件sls-sendfile

在OSS查看运维任务执行记录

本步骤为从ECS控制台跳转至指定存储空间的方法,您也可以直接登录OSS控制台,自行查找对应的存储空间。

  1. 登录ECS管理控制台
  2. 在左侧导航栏,单击发送命令/文件(云助手)
  3. 在顶部菜单栏左上角处,选择地域。
  4. ECS云助手页面的右上角,单击操作内容与结果投递
  5. 操作内容与结果投递对话框,单击请选择存储空间区域右侧的打开OSS控制台
  6. 进入存储某个运维任务相关文件的目录。
    跳转到OSS控制台后,系统自动定位到您在配置运维任务执行记录投递时填写的文件根目录,您可以根据运维任务类型逐级进入自动生成的子目录,包括:
    • 运维任务类型为执行命令:进入invocationResults/<执行ID>目录。在该目录下会显示以ECS实例ID为名称的目录、命令的脚本文件,其中脚本文件名可能为
      • commandContent.bat:对应Windows实例中执行Bat命令。
      • commandContent.ps1:对应Windows实例中执行PowerShell命令。
      • commandContent.sh:对应Linux实例中执行Shell命令。
    • 运维任务类型为发送文件:进入sendFileResults/<执行ID>目录。在该目录下会显示以ECS实例ID为名称的目录、已发送文件内容的文件(名称为fileContent.txt)。
    Linux实例中执行Shell命令的示例目录如下图所示。oss-dir
  7. 进入以ECS实例ID为名称的目录,查看在该ECS实例上执行运维任务的记录文件。
    执行记录文件为JSON格式,示例如下所示。
    • 单次执行命令oss-immediate
    • 周期执行命令

      其中文件名中的数字代表在指定实例上执行该命令的次数。

      oss-timed
    • 发送文件oss-sendfile
  8. 单击执行记录文件对应操作列下的详情,然后下载文件或复制文件URL,并查看文件内容。
    单次执行Shell命令的文件内容示例如下所示,具体参数的含义,请参见运维任务执行记录的参数
    {
        "RegionId":"cn-hangzhou",
        "InstanceId":"i-bp1hd5ztmab9cgc0****",
        "InvokeId":"t-hz01x7rtjfy****",
        "CommandId":"c-hz01x7cn5aj****",
        "CommandName":"cmd-hostname",
        "CommandType":"RunShellScript",
        "CommandContent":"hostname",
        "ResourceOwnerUid":160998252992****,
        "CallerUid":160998252992****,
        "CallerType":"customer",
        "Timeout":60,
        "Frequency":"",
        "Parameters":"{}",
        "Username":"",
        "RepeatMode":"Once",
        "Repeats":1,
        "InvocationStatus":"Success",
        "Dropped":0,
        "Output":"iZbp1hd5ztmab9cgc0****\n",
        "ExitCode":0,
        "CreationTime":"2021-09-26T05:47:20Z",
        "StartTime":"2021-09-26T05:47:20Z",
        "UpdateTime":"2021-09-26T05:47:20Z",
        "FinishedTime":"2021-09-26T05:47:20Z",
        "StopTime":""
    }

运维任务执行记录的参数

执行命令任务的执行记录中的参数含义如下表所示,如需了解更详细的参数用法说明,例如参数的可能值,请参见DescribeCommandsDescribeInvocationResults
名称 示例 描述
RegionId cn-hangzhou 命令执行对应ECS实例的地域ID。
InstanceId i-bp1hd5ztmab9cgc0**** 实例ID。
InvokeId t-hz01x7rtjfy**** 命令执行ID。
CommandId c-hz01x7cn5aj**** 命令ID。
CommandName cmd-hostname 命令名称。
CommandType RunShellScript 命令类型。
CommandContent hostname 命令的明文内容。
ResourceOwnerUid 160998252992**** 命令调用者的阿里云账号ID。
CallerUid 160998252992**** 命令调用者的账号ID。
CallerType customer 命令调用者的调用方式。
Timeout 60 创建的命令在ECS实例中执行时,最大的超时时间。
Frequency 0 * 14 * * ? 周期执行命令的执行周期。
Parameters {} 命令中包含自定义参数时,执行命令时传入的自定义参数的键值对。
Username root 在ECS实例中执行命令的用户名称。
RepeatMode Period 设置命令执行的方式。
Repeats 2 命令在ECS实例上执行的次数。
InvocationStatus Success 单台ECS实例的命令进度状态。
ErrorCode InstanceNotExists 命令的下发失败或执行失败原因的代码。
ErrorInfo the specified instance does not exists 命令的下发失败或执行失败原因的详情。
Dropped 0 Output字段中文字长度超出24KB后,截断并丢弃的文字长度。
Output iZbp1hd5ztmab9cgc0****\n 命令执行后的输出信息。
ExitCode 0 命令的退出码。
CreationTime 2021-09-26T05:47:20Z 命令执行的开始时间。
StartTime 2021-09-26T05:47:20Z 命令在ECS实例中开始执行的时间。
UpdateTime 2021-09-26T06:53:00Z 命令执行任务状态的更新时间。
FinishedTime 2021-09-26T06:53:00Z 命令执行的完成时间。
StopTime 2021-09-26T06:53:00Z 若调用了StopInvocation,则表示调用时的时间。
发送文件任务的执行记录中的参数含义如下表所示,如需了解更详细的参数用法说明,例如参数的可能值,请参见DescribeSendFileResults
名称 示例 描述
RegionId cn-hangzhou 文件下发对应ECS实例的地域ID。
InstanceId i-bp1hd5ztmab9cgc0**** 实例ID。
InvokeId f-hz01xeva44**** 执行ID。
FileName sendfile-test.txt 文件名称。
ContentType Base64 文件内容的类型。
Description Used for test 文件的描述信息。
FileContent c2VuZCBmaWxlIHRlc3Q= 文件内容。
FileGroup root 文件的用户组。
FileMode 0644 文件的权限。
FileOwner root 文件的用户。
ResourceOwnerUid 16099825299**** 文件下发者的阿里云账号ID。
CallerUid 16099825299**** 文件下发者的账号ID。
CallerType customer 文件下发者的调用方式。
Overwrite true 如果同名文件在目标目录已存在,是否覆盖文件。
TargetDir /root 文件下发的目标路径。
Timeout 60 文件下发的超时时间。
InvocationStatus Success 文件下发任务的状态。
ErrorCode FileAlreadyExists 文件下发的失败原因代码。
ErrorInfo File already exists: sendfile-test.txt 文件下发的失败或执行失败原因详情。
CreationTime 2021-09-28T05:31:04Z 文件下发任务的创建时间。
StartTime 2021-09-28T05:31:04Z 文件下发任务在ECS实例中开始执行的时间。
UpdateTime 2021-09-28T05:31:04Z 文件下发任务状态的更新时间。
FinishTime 2021-09-28T05:31:04Z 文件下发任务的结束时间。