

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

# `AWSSupport-TroubleshootOpenSearchHighCPU`
<a name="automation-troubleshoot-opensearch-high-cpu"></a>

 **Description** 

 `AWSSupport-TroubleshootOpenSearchHighCPU` Runbook 提供自動化解決方案，從 Amazon OpenSearch Service 網域收集診斷資料，以疑難排解[高 CPU](https://repost.aws/knowledge-center/opensearch-troubleshoot-high-cpu) 問題。

 **如何運作？** 

 `AWSSupport-TroubleshootOpenSearchHighCPU` Runbook 有助於疑難排解 Amazon OpenSearch Service 網域中的高 CPU 使用率。

 Runbook 會執行下列步驟：
+  針對提供的 Amazon OpenSearch Service 網域執行 [DescribeDomain](https://docs.aws.amazon.com//opensearch-service/latest/APIReference/API_DescribeDomain.html) API，以取得叢集中繼資料。
+  檢查 Amazon OpenSearch Service 網域是公有還是 Amazon VPC 型 CloudFormation，並在 的協助下建立公有或 [Amazon VPC 型](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/vpc.html) AWS Lambda 函數。
+  Lambda 函數會從 Amazon OpenSearch Service 網域擷取診斷資料。
+  使用 AWS Step Functions 狀態機器來協調多個 Lambda 函數執行，以收集更全面的資料。
+  預設會將收集的資料儲存在 Amazon CloudWatch 日誌群組中 24 小時。
+  刪除已建立的資源，但 CloudWatch 日誌群組除外。

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ `cloudformation:CreateStack`
+ `cloudformation:CreateStack`
+ `cloudformation:DescribeStacks`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DeleteStack`
+ `lambda:CreateFunction`
+ `lambda:DeleteFunction`
+ `lambda:InvokeFunction`
+ `lambda:GetFunction`
+ `lambda:TagResource`
+ `es:DescribeDomain`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcs`
+ `ec2:DescribeNetworkInterfaces`
+ `ec2:CreateNetworkInterface`
+ `ec2:DescribeInstances`
+ `ec2:AttachNetworkInterface`
+ `ec2:DeleteNetworkInterface`
+ `logs:CreateLogGroup`
+ `logs:PutRetentionPolicy`
+ `logs:TagResource`
+ `states:CreateStateMachine`
+ `states:DeleteStateMachine`
+ `states:StartExecution`
+ `states:TagResource`
+ `states:DescribeStateMachine`
+ `states:DescribeExecution`
+ `iam:PassRole`
+ `iam:CreateRole`
+ `iam:DeleteRole`
+ `iam:GetRole`
+ `iam:PutRolePolicy`
+ `iam:DeleteRolePolicy`
+ `ssm:DescribeAutomationExecutions`
+ `ssm:GetAutomationExecution`

**注意**  
 `iam:DeleteRolePolicy` 只有在您未使用 **LambdaInvocationRoleForStepFunctions** 參數的現有 IAM 角色時，才需要 `iam:CreateRole` `iam:DeleteRole` `iam:GetRole` `iam:PutRolePolicy` `iam:PutRolePolicy`、、、 和

`LambdaExecutionRole` 參數需要下列動作才能成功使用 Runbook：
+ `es:ESHttpGet`
+ `ec2:CreateNetworkInterface`
+ `ec2:DescribeNetworkInterfaces`
+ `ec2:DeleteNetworkInterface`
+ `logs:CreateLogStream`
+ `logs:PutLogEvents`

Lambda 執行角色會授予函數存取此 Runbook 所需 AWS 服務和資源的許可。如需更多詳細資訊，請參閱 [Lambda 執行角色](https://docs.aws.amazon.com//lambda/latest/dg/lambda-intro-execution-role.html)。

**注意**  
 `ec2:DeleteNetworkInterface` 只有當您的 OpenSearch Service 叢集是以 [Amazon VPC 為基礎](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/vpc.html)，以允許 Lambda `ec2:DescribeNetworkInterfaces`函數建立和管理 Amazon VPC 網路介面時，才需要 `ec2:CreateNetworkInterface`、 和 。如需詳細資訊，請參閱[將傳出聯網連接到 Amazon VPC 和 Lambda 執行角色中的資源](https://docs.aws.amazon.com//lambda/latest/dg/configuration-vpc.html#vpc-permissions)。 [https://docs.aws.amazon.com//lambda/latest/dg/lambda-intro-execution-role.html](https://docs.aws.amazon.com//lambda/latest/dg/lambda-intro-execution-role.html)

`LambdaInvocationRoleForStepFunctions` 參數會授予狀態機器叫用 Lambda 函數的許可 AWS Step Functions 。以下是授予 Step Functions 許可的範例 IAM 政策，以叫用從 OpenSearch Service 網域擷取診斷資料的 Lambda 函數。如需詳細資訊，請參閱《 AWS Step Functions 開發人員指南》中的[建立狀態機器 IAM 角色](https://docs.aws.amazon.com/step-functions/latest/dg/procedure-create-iam-role.html)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": [
                "arn:aws:lambda:us-east-1:111122223333:function:AWSSupport-HighCPU-*"
            ]
        }
    ]
}
```

------

 **指示** 

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

1. 導覽至主控台中的 [AWSSupport-TroubleshootOpenSearchHighCPU](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootOpenSearchHighCPU/description) AWS Systems Manager 。

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

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

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

     您要針對高 CPU 問題進行疑難排解的 Amazon OpenSearch Service 網域名稱。
   + **LambdaExecutionRoleForOpenSearch （必要）：**

     要連接至 Lambda 函數之 IAM 角色的 ARN。Lambda 函數會使用來自此角色的登入資料來簽署對 Amazon OpenSearch Service 網域的請求。如果已在 Amazon OpenSearch Service 網域上啟用精細存取控制，您必須將此角色映射至至少具有「cluster\$1monitor」許可的 OpenSearch Service Dashboards 後端角色。
   + **LambdaInvocationRoleForStepFunctions （選用）：**

     （選用） 要連接至 Step Functions 工作流程之 IAM 角色的 ARN。狀態機器會使用此角色的登入資料來叫用從 OpenSearch Service 網域擷取診斷資料的 Lambda 函數。如果未指定角色，此自動化將為帳戶中的 Step Functions 建立 IAM 角色。
   + **DataRetentionDays （選用）：**

     保留從 Amazon OpenSearch Service 網域收集之診斷資料的天數。根據預設，資料會保留 24 小時 （一天）。您可以選擇將資料保留最多 30 天。
   + **NumberOfDataSamples （選用）：**

     從 Amazon OpenSearch Service 網域收集的資料範例數目。根據預設，會收集 5 個資料範例。您最多可以收集 10 個範例，而且每個範例收集都會叫用 Lambda 函數。

1. 如果您已在 OpenSearch Service 叢集上啟用[精細存取控制](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/fgac.html)，請確定`LambdaExecutionRole`角色 ARN 已映射至至少具有 `cluster_monitor` 許可的角色。  
![\[叢集 permissions section showing cluster_monitor permission granted.\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-opensearch-high-cpu_cluster_permissions.png)  
![\[Backend roles interface showing an AWSIAM role for Lambda execution and options to remove or add roles.\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-opensearch-high-cpu_backend_roles.png)

1. 選取執行。

1. 自動化會啟動。

1. 自動化 Runbook 會執行下列步驟：
   + **checkConcurrency：**

     確保只有一個針對指定 Amazon OpenSearch Service 網域的 Runbook 執行。如果 Runbook 找到另一個以相同網域名稱為目標的執行，則會傳回錯誤並結束。
   + **getDomainConfig：**

     取得目標 OpenSearch Service 網域的組態詳細資訊。
   + **provisionResources：**

     使用 佈建用於資料收集的資源 CloudFormation。
   + **waitForStackCreation：**

     等待 CloudFormation 堆疊完成。
   + **describeStackResources：**

     描述 CloudFormation 堆疊並取得狀態機器的 ARN。
   + **runStateMachine：**

     執行 Step Functions 狀態機器，以叫用資料收集器 Lambda 函數一或多次。
   + **describeErrorsFromStackEvents：**

     描述來自 CloudFormation 堆疊的錯誤。
   + **unstageOpenSearchHighCPUAutomation：**

     刪除`AWSSupport-TroubleshootOpenSearchHighCPU` CloudFormation 堆疊。
   + **describeErrorsFromStackDeletion：**

     描述刪除 CloudFormation 堆疊時遇到的錯誤。
   + **finalStatus：**

     傳回 `AWSSupport-TroubleshootOpenSearchHighCPU` Runbook 的最終輸出。

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

     提供存放診斷資料的 CloudWatch 日誌群組。  
![\[Output message indicating hot thread data collection completed with log group details.\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-opensearch-high-cpu_outputs.png)

 **參考** 

Systems Manager Automation
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootOpenSearchHighCPU)
+ [執行自動化](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/)

AWS 服務文件
+ 如需詳細資訊，請參閱[疑難排解 Amazon OpenSearch Service](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/handling-errors.html) 