

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

# `AWSSupport-CollectEKSLinuxNodeStatistics`
<a name="automation-awssupport-collectekslinuxnodestatistics"></a>

 **Description** 

`AWSSupport-CollectEKSLinuxNodeStatistics` Runbook 會從屬於 Amazon EKS 叢集的 Amazon EC2 執行個體，以及指定容器 ID 時，從執行個體上執行的`containerd`容器收集 Linux 統計資料。Amazon EC2 執行個體必須由 管理 AWS Systems Manager。

收集的主機層級 Linux 統計資料包括：
+ 作業系統資訊。
+ 網路介面統計資料 - 來自 `ethtool`和 `/sys/class/net/interface/statistics`目錄。
+ 檔案描述項計數。
+ 暫時性連接埠計數。
+ `iptables` 規則傾印。
+ 檢查完整的連線資料表。

容器層級 Linux 統計資料包括：
+ 識別符資訊 - 映像 URI 和標籤。
+ 網路介面統計資料 - 來自 `ethtool`和 `/sys/class/net/interface/statistics`目錄。
+ 如果已填入 `NetworkTargets` 參數，則追蹤路由和 DNS 結果。
+ 封包擷取分析計數 - TCP 重新傳輸、無序封包等。

Runbook 會從各種 Linux 發行版本收集資料，包括 Amazon Linux 2、Amazon Linux 2023 和 Debian/Ubuntu。它使用來自 Amazon ECR 公有圖庫的下列映像的最新版本：
+ `amazon-ecs-network-sidecar` 映像，以取得疑難排解工具的存取權。
+ `aws-cli` 影像，將統計資料報告 JSON 檔案和封包擷取檔案上傳至指定的 Amazon S3 儲存貯體。

**重要**  
此 Runbook 不支援 Fargate 執行個體。如果執行個體在執行期間關閉或中斷連線，此 Runbook 可能會失敗。

 **如何運作？** 

Runbook 會執行下列動作：
+ 驗證目標 Amazon S3 儲存貯體未授予公有讀取或寫入存取權。
+ 確保目標 Amazon EC2 執行個體由 Systems Manager 管理，且處於執行中狀態。
+ 驗證執行個體是否正在執行 Linux 作業系統。
+ 從 Amazon EC2 執行個體收集完整的 Linux 統計資料，也可以選擇從指定的容器收集。
+ 將收集到的統計資料上傳至指定的 Amazon S3 儲存貯體。

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

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。

`AutomationAssumeRole` 參數需要下列動作：
+ `s3:GetAccountPublicAccessBlock`
+ `s3:GetBucketPublicAccessBlock`
+ `s3:GetBucketAcl`
+ `s3:GetBucketPolicyStatus`
+ `s3:GetBucketLocation`
+ `s3:GetEncryptionConfiguration`
+ `s3:PutObject`
+ `ssm:DescribeInstanceInformation`
+ `ssm:SendCommand`
+ `ssm:GetCommandInvocation`
+ `ec2:DescribeInstances`

IAM 政策範例：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetAccountPublicAccessBlock"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketLocation",
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": "arn:aws:s3:::S3_BUCKET_NAME"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::S3_BUCKET_NAME/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeInstanceInformation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:document/AWS-RunShellScript",
                "arn:aws:ec2:*:111122223333:instance/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetCommandInvocation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        }
    ]
}
```

 **指示** 

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

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

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

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

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

     要收集統計資料的 Amazon EC2 執行個體 ID。
   + **S3BucketName （必要）：**

     Amazon S3 儲存貯體的名稱，可將 Amazon EC2 執行個體的 JSON 輸出匯出為 檔案。
   + **S3KeyPrefix （選用）：**

     從 Amazon EC2 執行個體將 JSON 輸出匯出為 檔案的 Amazon S3 金鑰字首 （子資料夾）。 Amazon EC2 預設：`AWSSupport-CollectEKSLinuxNodeStatistics`。
   + **S3BucketOwnerRoleArn （選用）：**

     IAM 角色的 ARN，具有取得 Amazon S3 儲存貯體和帳戶區塊公開存取設定、儲存貯體加密組態、儲存貯體 ACLs、儲存貯體政策狀態，以及將物件上傳至儲存貯體的許可。如果未指定此參數，則 Runbook 會使用 `AutomationAssumeRole`（如果指定） 或啟動此 Runbook 的使用者 （如果`AutomationAssumeRole`未指定）。
   + **S3BucketOwnerAccount （選用）：**

     擁有 Amazon S3 儲存貯體 AWS 的帳戶。如果您未指定此參數，則 Runbook 會假設儲存貯體位於此帳戶中。
   + **ContainerId （選用）：**

     在指定 Amazon EC2 執行個體上執行的容器 ID。
   + **NetworkTargets （選用）：**

     以逗號分隔的 IPv4 地址和/或 DNS 名稱清單，用於測試 DNS 解析，以及使用 traceroute 的連線。

1. 選取執行。

1. 自動化會啟動。

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

     檢查目標 Amazon S3 儲存貯體是否可能授予其物件的讀取和/或寫入公開存取權。
   + **`AssertInstanceIsSSMManaged`**:

     確保目標 Amazon EC2 執行個體由 Systems Manager 管理，否則自動化會結束。
   + **`VerifyInstanceState`**:

     在嘗試收集統計資料之前，驗證 Amazon EC2 執行個體是否處於執行中狀態。
   + **`BranchOnVerifyLinuxInstance`**:

     在繼續之前，驗證執行個體是否為 Linux 執行個體。
   + **`BranchOnVerifyInstanceRunning`**:

     在繼續之前，確認執行個體處於執行中狀態。
   + **`CollectEKSLinuxNodeStatistics`**:

     從 Amazon EC2 執行個體收集完整的 Linux 統計資料，包括作業系統資訊、網路介面統計資料、檔案描述項、暫時性連接埠、防火牆規則，以及選用的容器層級統計資料。
   + **`GenerateStatisticsOutputS3Uri`**:

     將完整的 Amazon S3 URI 產生到 Linux 統計資料檔案，以做為自動化文件的輸出。

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

**參考**

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