

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# `AWSSupport-CollectSAPHANALogs`
<a name="automation-awssupport-collectsaphanalogs"></a>

 **Description** 

`AWSSupport-CollectSAPHANALogs` Runbook 會從 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上的 SAP HANA 收集系統日誌，這是 AWS 部署時 SAP 的一部分。Amazon EC2 執行個體必須由 AWS Systems Manager (Systems Manager) 管理。Runbook 會檢查必要的套件，並在遺失時安裝它們、針對偵測到的作業系統執行適當的日誌收集工具，以及選擇性地將收集到的日誌上傳至 Amazon Simple Storage Service (Amazon S3) 儲存貯體。

**重要**  
此 Runbook 需要`/var/log`分割區上至少 200 MB 的可用磁碟空間。執行此 Runbook 可能會在目標 Amazon EC2 執行個體上安裝其他套件。您必須將 `Acknowledgement` 參數設定為 來確認這一點`Yes`。在 Amazon S3 中存放日誌會產生標準 Amazon S3 儲存和請求費用。

 **支援的作業系統** 
+ Red Hat Enterprise Linux 8.4 和更新版本
+ SUSE Linux Enterprise Server 12 SP5
+ SUSE Linux Enterprise Server 15 SP3 及更新版本

 **如果遺失，則會安裝套件** 

SUSE Linux Enterprise Server:
+ `supportutils`
+ `yast2-support`
+ `supportutils-plugin-suse-public-cloud`
+ `supportutils-plugin-ha-sap`
+ `crmsh`
+ `unzip`
+ `curl`
+ `aws-cli` （選用，如果 `InstallAWSCLI` 設定為 則安裝`Yes`)

Red Hat Enterprise Linux:
+ `sos`
+ `crm_report`
+ `unzip`
+ `curl`
+ `aws-cli` （選用，如果 `InstallAWSCLI` 設定為 則安裝`Yes`)

[執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-CollectSAPHANALogs)

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 的使用者許可。
+ InstanceID

  類型：AWS::EC2::Instance：：Id

  描述：（必要） 執行 SAP 工作負載的 Amazon EC2 執行個體 ID，應從中收集日誌。
+ 確認

  類型：字串

  有效值：是

  描述：（必要） 我確認此 Runbook 可能會在目標 Amazon EC2 執行個體中安裝其他套件以進行日誌收集。
+ S3LogDestination

  類型：AWS::S3::Bucket：：Name

  描述：（選用） 日誌上傳到的 Amazon S3 儲存貯體名稱。儲存貯體不得為公有，且必須屬於相同的 AWS 帳戶。如果未提供，日誌會存放在執行個體本機儲存體中。
+ S3Prefix

  類型：字串

  預設：AWSSupport-CollectSAPHANALogs

  允許模式： `^$|^[a-zA-Z0-9][-./a-zA-Z0-9]{0,255}$`

  描述：（選用） 存放日誌的 Amazon S3 儲存貯體字首。如果未提供，則預設為 `AWSSupport-CollectSAPHANALogs`。
+ InstallAWSCLI

  類型：字串

  有效值：是 \$1 否

  預設：否

  描述：（選用） 是否要在執行個體上安裝 AWS CLI。如果 `Yes`，如果尚未存在，則 Runbook 會安裝 AWS CLI。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ `ssm:DescribeInstanceInformation`
+ `ssm:SendCommand`
+ `ssm:GetCommandInvocation`
+ `s3:GetBucketPublicAccessBlock`
+ `s3:GetBucketAcl`
+ `s3:GetBucketLocation`
+ `s3:GetBucketOwnershipControls`
+ `s3:GetEncryptionConfiguration`
+ `s3:PutObject`

 **文件步驟** 

1. `AssertInstanceIsSSMManaged` - 驗證目標 Amazon EC2 執行個體是由 Systems Manager 管理，且具有 `PingStatus`的 `Online`。如果未管理執行個體，則 Runbook 會取消。

1. `GetInstanceInformation` - 擷取指定 Amazon EC2 執行個體的相關資訊，包括平台名稱，用於判斷適當的日誌收集方法。

1. `CollectLogs` - 在執行個體上執行 shell 指令碼以收集日誌。對於 SUSE Linux Enterprise Server 執行個體，指令碼使用 `supportconfig`。對於Red Hat Enterprise Linux執行個體，它使用 `sos report`。對於 HA 叢集，指令碼也會使用 `crm report`命令收集過去 7 天的其他 HA 日誌。如果遺失，則會安裝必要的套件。

1. `BranchOnS3BucketProvided` - 根據 中是否提供 Amazon S3 儲存貯體來分支執行`S3LogDestination`。如果未提供儲存貯體，則 Runbook 會跳至 `GenerateReport`。否則，它會繼續執行 `CheckS3BucketPublicStatus`。

1. `CheckS3BucketPublicStatus` - 檢查 中指定的 Amazon S3 儲存貯體是否已`S3LogDestination`設定伺服器端加密 (SSE)，以及是否允許匿名或公有讀取或寫入存取許可。也會驗證實際儲存貯體擁有者是否與預期的儲存貯體擁有者相同。如果此步驟失敗，則 Runbook `GenerateReport`會繼續執行而不上傳。

1. `UploadLogsToS3` - 將收集的日誌上傳至指定的 Amazon S3 儲存貯體。如果 `InstallAWSCLI` 設定為 AWS `Yes`且未安裝 CLI，指令碼會在上傳之前安裝 AWS CLI。

1. `GenerateReport` - 產生日誌收集程序的報告。如果提供了 Amazon S3 儲存貯體，則會包含上傳日誌的 Amazon S3 儲存貯體名稱和字首。如果沒有，則表示日誌存放在本機執行個體上。它還報告了為什麼任何先前的步驟失敗。

 **輸出** 

`GenerateReport.Summary` - 日誌收集結果的摘要。

`GenerateReport.LogLocation` - 存放日誌的位置，可能是執行個體上的本機路徑或 Amazon S3 URI。

`GenerateReport.Status` - 日誌收集執行的整體狀態。

 **指示** 

請依照下列步驟設定自動化：

1. 在文件下的 Systems Manager [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CollectSAPHANALogs/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CollectSAPHANALogs/description)中導覽至 。

1. 選擇 Execute automation (執行自動化)。

1. 針對輸入參數，輸入下列內容：
   + **AutomationAssumeRole （選用）：**

     允許 Systems Manager Automation 代表您執行動作的 IAM 角色 ARN。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
   + **InstanceID （必要）：**

     執行 SAP 工作負載的 Amazon EC2 執行個體 ID。
   + **確認 （必要）：**

     輸入 `Yes` 以確認 Runbook 可能會在目標 Amazon EC2 執行個體上安裝其他套件。
   + **S3LogDestination （選用）：**

     要上傳日誌的 Amazon S3 儲存貯體名稱。如果未提供，日誌會儲存在本機執行個體上。
   + **S3Prefix （選用）：**

     存放日誌的 Amazon S3 儲存貯體字首。預設為 `AWSSupport-CollectSAPHANALogs`。
   + **InstallAWSCLI （選用）：**

     如果執行個體上沒有 AWS CLI，請選取 `Yes` 以自動安裝該 CLI。預設為 `No`。

1. 選取執行。

1. 自動化會啟動。

1. 文件會執行下列步驟：
   + **`AssertInstanceIsSSMManaged`**

     驗證目標 Amazon EC2 執行個體是由 Systems Manager 管理，且具有 `PingStatus`的 `Online`。
   + **`GetInstanceInformation`**

     擷取指定 Amazon EC2 執行個體的相關資訊，包括平台名稱。
   + **`CollectLogs`**

     使用 `supportconfig` for SLES或 `sos report` for 執行 shell 指令碼以收集日誌RHEL。對於 HA 叢集， 也會使用 收集過去 7 天的 HA 日誌`crm report`。
   + **`BranchOnS3BucketProvided`**

     `GenerateReport` 如果未提供 Amazon S3 儲存貯體，請跳到 ，否則繼續到 `CheckS3BucketPublicStatus`。
   + **`CheckS3BucketPublicStatus`**

     確認 Amazon S3 儲存貯體已啟用 SSE、不允許公開存取，且為相同 AWS 帳戶所擁有。
   + **`UploadLogsToS3`**

     將收集的日誌上傳至指定的 Amazon S3 儲存貯體。如果 `InstallAWSCLI`為 `Yes`且尚未存在，則安裝 AWS CLI。
   + **`GenerateReport`**

     產生日誌收集結果的摘要，包括日誌位置和任何步驟失敗。

1. 完成後，請檢閱輸出區段以取得執行的詳細結果。

 **參考** 

Systems Manager Automation
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CollectSAPHANALogs/description)
+ [執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [設定自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支援自動化工作流程登陸頁面](https://aws.amazon.com/premiumsupport/technology/saw/)