您可以使用雲助手任務執行記錄投遞功能,將任務執行記錄投遞到Object Storage Service和Log ServiceSLS中,進行持久化儲存。本文介紹如何通過雲助手進行投遞配置和查看已投遞的執行記錄檔案。
背景資訊
雲助手支援保留執行記錄,但保留時間長度和條數均存在限制,更多資訊,請參見雲助手使用限制。如果您需要長時間或大量保留執行記錄,建議使用任務執行記錄投遞功能,以便對任務執行記錄進行查詢、安全分析、資源變更行為追蹤和行為合規性審計等操作。
計費說明
會話操作記錄投遞功能本身不收費,但使用該功能的過程中,您需要為如下內容付費:
步驟一:配置任務執行記錄投遞
登入ECS管理主控台。
在左側導覽列,選擇 。
在頂部功能表列左上方處,選擇地區。
說明不支援跨地區投遞,請為需要投遞執行記錄的地區分別完成配置。
在ECS 雲助手頁面的右上方,單擊設定。
在彈出的雲助手設定對話方塊中,單擊命令執行設定頁簽,完成投遞配置。
任務執行記錄投遞到Log ServiceSLS。
選中投遞到Log ServiceSLS。
選擇已建立的SLS專案和日誌庫。
如果還未建立SLS專案和日誌庫,請單擊右側的開啟SLS控制台或管理日誌庫開始即時建立,建立完成後返回該對話方塊單擊表徵圖,查看最新的列表。具體操作,請參見管理Project和管理Logstore。
在SLS中查詢、分析日誌還需要提前開啟索引,具體操作,請參見建立索引。
(可選)您還可以設定日誌庫的伺服器端加密方式,會話操作記錄投遞會繼承該加密方式。具體操作,請參見資料加密。
任務執行記錄投遞到Object Storage Service。
單擊確定。
首次進行投遞配置時,系統自動授權雲助手擷取訪問SLS和OSS資源的許可權,即自動為您建立一個服務關聯角色,以便將會話操作記錄投遞到您指定的SLS日誌庫或OSS儲存空間中。如果已經存在,則不會重複建立。您可以手動管理授權,具體操作,請參見管理雲助手服務關聯角色。
步驟二:執行命令或傳送檔案
執行命令或傳送檔案,執行記錄會自動投遞至您指定的SLS日誌庫或OSS儲存空間中。
具體操作,請參見建立並執行命令、執行命令和上傳本地檔案到ECS執行個體。
步驟三:查看任務執行記錄
在SLS查看任務執行記錄
本步驟為從ECS控制台跳轉至指定日誌庫的方法,您也可以直接登入SLS控制台,自行尋找對應的日誌庫。
登入ECS管理主控台。
在左側導覽列,選擇 。
在頂部功能表列左上方處,選擇地區。
在ECS 雲助手頁面右上方,單擊設定。
在彈出的雲助手設定對話方塊中,單擊命令執行設定頁簽,然後選中投遞到Log ServiceSLS。
單擊請選擇Log Service日誌庫地區右側的管理日誌庫。
查看日誌的相關操作說明,請參見查詢和分析日誌。
雲助手的任務執行記錄日誌樣本如下所示,具體參數的含義,請參見任務執行記錄參數說明。
單次執行命令
周期執行命令
其中Repeats對應的值為已經執行該命令的次數。
傳送檔案
在OSS查看任務執行記錄
本步驟為從ECS控制台跳轉至指定儲存空間的方法,您也可以直接登入OSS控制台,自行尋找對應的儲存空間。
登入ECS管理主控台。
在左側導覽列,選擇 。
在頂部功能表列左上方處,選擇地區。
在ECS 雲助手頁面右上方,單擊設定。
在彈出的雲助手設定對話方塊中,單擊命令執行設定頁簽,然後選中投遞到Object Storage Service。
單擊請選擇儲存空間地區右側的開啟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 | 檔案下發任務的結束時間。 |