您可以使用云助手任务执行记录投递功能,将任务执行记录投递到对象存储OSS和日志服务SLS中,进行持久化存储。本文介绍如何通过云助手进行投递配置和查看已投递的执行记录文件。
背景信息
云助手支持保留执行记录,但保留时长和条数均存在限制,更多信息,请参见云助手使用限制。如果您需要长时间或大量保留执行记录,建议使用任务执行记录投递功能,以便对任务执行记录进行查询、安全分析、资源变更行为追踪和行为合规性审计等操作。
计费说明
会话操作记录投递功能本身不收费,但使用该功能的过程中,您需要为如下内容付费:
步骤一:配置任务执行记录投递
登录ECS管理控制台。
在左侧导航栏,选择 。
在顶部菜单栏左上角处,选择地域。
说明不支持跨地域投递,请为需要投递执行记录的地域分别完成配置。
在ECS 云助手页面的右上角,单击设置。
在弹出的云助手设置对话框中,单击命令执行设置页签,完成投递配置。
任务执行记录投递到日志服务SLS。
选中投递到日志服务SLS。
选择已创建的SLS项目和日志库。
如果还未创建SLS项目和日志库,请单击右侧的打开SLS控制台或管理日志库开始即时创建,创建完成后返回该对话框单击图标,查看最新的列表。具体操作,请参见管理Project和管理Logstore。
在SLS中查询、分析日志还需要提前开启索引,具体操作,请参见创建索引。
(可选)您还可以设置日志库的服务器端加密方式,会话操作记录投递会继承该加密方式。具体操作,请参见数据加密。
任务执行记录投递到对象存储OSS。
单击确定。
首次进行投递配置时,系统自动授权云助手获取访问SLS和OSS资源的权限,即自动为您创建一个服务关联角色,以便将会话操作记录投递到您指定的SLS日志库或OSS存储空间中。如果已经存在,则不会重复创建。您可以手动管理授权,具体操作,请参见管理云助手服务关联角色。
步骤二:执行命令或发送文件
执行命令或发送文件,执行记录会自动投递至您指定的SLS日志库或OSS存储空间中。
具体操作,请参见创建并执行命令、执行命令和通过云助手上传文件到ECS实例。
步骤三:查看任务执行记录
在SLS查看任务执行记录
本步骤为从ECS控制台跳转至指定日志库的方法,您也可以直接登录SLS控制台,自行查找对应的日志库。
登录ECS管理控制台。
在左侧导航栏,选择 。
在顶部菜单栏左上角处,选择地域。
在ECS 云助手页面右上角,单击设置。
在弹出的云助手设置对话框中,单击命令执行设置页签,然后选中投递到日志服务SLS。
单击请选择日志服务日志库区域右侧的管理日志库。
查看日志的相关操作说明,请参见查询和分析日志。
云助手的任务执行记录日志示例如下所示,具体参数的含义,请参见任务执行记录参数说明。
单次执行命令
周期执行命令
其中Repeats对应的值为已经执行该命令的次数。
发送文件
在OSS查看任务执行记录
本步骤为从ECS控制台跳转至指定存储空间的方法,您也可以直接登录OSS控制台,自行查找对应的存储空间。
登录ECS管理控制台。
在左侧导航栏,选择 。
在顶部菜单栏左上角处,选择地域。
在ECS 云助手页面右上角,单击设置。
在弹出的云助手设置对话框中,单击命令执行设置页签,然后选中投递到对象存储OSS。
单击请选择存储空间区域右侧的打开OSS控制台。
进入存储某个任务相关文件的目录。
跳转到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命令的示例目录如下图所示。
进入以ECS实例ID为名称的目录,查看在该ECS实例上执行任务的记录文件。
执行记录文件为JSON格式,示例如下所示。
单次执行命令
周期执行命令
其中文件名中的数字代表在指定实例上执行该命令的次数。
发送文件
单击执行记录文件对应操作列下的详情,然后下载文件或复制文件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":"" }
任务执行记录参数说明
执行命令任务的执行记录中的参数含义如下表所示,如需了解更详细的参数用法说明,例如参数的可能值,请参见DescribeCommands和DescribeInvocationResults。
名称 | 示例 | 描述 |
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 | 文件下发任务的结束时间。 |