任务执行记录投递

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

背景信息

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

计费说明

会话操作记录投递功能本身不收费,但使用该功能的过程中,您需要为如下内容付费:

  • 使用SLS存储会话操作记录或使用SLS的日志索引等功能。

    具体计费信息,请参见SLS计费概述

  • 使用OSS存储会话操作记录或使用OSS的文件管理等功能。

    具体计费信息,请参见OSS计费概述

步骤一:配置任务执行记录投递

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择运维与监控 > 云助手

  3. 在顶部菜单栏左上角处,选择地域。

    说明

    不支持跨地域投递,请为需要投递执行记录的地域分别完成配置。

  4. ECS 云助手页面的右上角,单击设置

  5. 在弹出的云助手设置对话框中,单击命令执行设置页签,完成投递配置。

    • 任务执行记录投递到日志服务SLS。

        1. 选中投递到日志服务SLS

        2. 选择已创建的SLS项目和日志库。

          • 如果还未创建SLS项目和日志库,请单击右侧的打开SLS控制台管理日志库开始即时创建,创建完成后返回该对话框单击刷新图标图标,查看最新的列表。具体操作,请参见管理Project管理Logstore

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

          • (可选)您还可以设置日志库的服务器端加密方式,会话操作记录投递会继承该加密方式。具体操作,请参见数据加密

    • 任务执行记录投递到对象存储OSS。

        1. 选中投递到对象存储OSS

        2. 选择已创建的OSS存储空间,并填写用于存储会话操作记录文件的根目录。

          如果还未创建OSS存储空间,请单击右侧的打开OSS控制台开始即时创建,创建完成后返回该对话框单击刷新图标图标,查看最新的列表。具体操作,请参见创建存储空间

        3. (可选)单击高级选项后的图标.png图标,设置服务器端加密方式。

          说明

          OSS提供了服务器端加密机制,提供静态数据保护,适合于对于文件存储有高安全性或者合规性要求的应用场景。若您设置了服务器端加密方式,将为会话操作记录投递文件(Object)进行对应的加密。更多信息,请参见服务器端加密

  6. 单击确定

    首次进行投递配置时,系统自动授权云助手获取访问SLS和OSS资源的权限,即自动为您创建一个服务关联角色,以便将会话操作记录投递到您指定的SLS日志库或OSS存储空间中。如果已经存在,则不会重复创建。您可以手动管理授权,具体操作,请参见管理云助手服务关联角色

    111.png

步骤二:执行命令或发送文件

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

具体操作,请参见创建并执行命令执行命令通过云助手上传文件到ECS实例

步骤三:查看任务执行记录

在SLS查看任务执行记录

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

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择运维与监控 > 云助手

  3. 在顶部菜单栏左上角处,选择地域。

  4. ECS 云助手页面右上角,单击设置

  5. 在弹出的云助手设置对话框中,单击命令执行设置页签,然后选中投递到日志服务SLS

  6. 单击请选择日志服务日志库区域右侧的管理日志库

    查看日志的相关操作说明,请参见查询和分析日志

    云助手的任务执行记录日志示例如下所示,具体参数的含义,请参见任务执行记录参数说明

    • 单次执行命令once

    • 周期执行命令

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

      sls-timed

    • 发送文件sls-sendfile

在OSS查看任务执行记录

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

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择运维与监控 > 云助手

  3. 在顶部菜单栏左上角处,选择地域。

  4. ECS 云助手页面右上角,单击设置

  5. 在弹出的云助手设置对话框中,单击命令执行设置页签,然后选中投递到对象存储OSS

  6. 单击请选择存储空间区域右侧的打开OSS控制台

  7. 进入存储某个任务相关文件的目录。

    跳转到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

  8. 进入以ECS实例ID为名称的目录,查看在该ECS实例上执行任务的记录文件。

    执行记录文件为JSON格式,示例如下所示。

    • 单次执行命令oss-immediate

    • 周期执行命令

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

      oss-timed

    • 发送文件oss-sendfile

  9. 单击执行记录文件对应操作列下的详情,然后下载文件或复制文件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 * * ?

周期执行命令的执行周期,该周期为一个Cron表达式。更多信息,请参见Cron表达式

Parameters

{}

命令中包含自定义参数时,执行命令时传入的自定义参数的键值对。

Username

root

在ECS实例中执行命令的用户名。

RepeatMode

Period

设置命令执行的方式。

Repeats

2

命令在ECS实例上执行的次数。

InvocationStatus

Success

单台ECS实例的命令进度状态。

ErrorCode

InstanceNotExists

命令的下发失败或执行失败原因的代码。

ErrorInfo

the specified instance does not exists

命令的下发失败或执行失败原因的详情。

Dropped

0

Output字段中文字长度超出24 KB后,截断并丢弃的文字长度。

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

文件下发任务的结束时间。