

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

 **描述** 

`AWSSupport-CollectEKSLinuxNodeStatistics`运行手册从属于 Amazon EKS 集群的 Amazon EC2 实例以及该实例上运行的容器（如果指定了容器 ID）收集 Linux 统计数据。`containerd`Amazon EC2 实例必须由管理 AWS Systems Manager。

收集的主机级 Linux 统计数据包括：
+ 操作系统信息。
+ 网络接口统计信息-来自`ethtool`和`/sys/class/net/interface/statistics`目录。
+ 文件描述符很重要。
+ 临时端口很重要。
+ 一堆`iptables`规则。
+ 查看完整的 conntrack 表。

容器级 Linux 统计数据包括：
+ 标识符信息-图片 URI 和标签。
+ 网络接口统计信息-来自`ethtool`和`/sys/class/net/interface/statistics`目录。
+ 如果`NetworkTargets`参数已填充，则会生成跟踪路径和 DNS 结果。
+ 数据包捕获分析计数-TCP 重传、乱序数据包等

该运行手册收集来自各种 Linux 发行版的数据，包括亚马逊 Linux 2、亚马逊 Linux 2023 和 Debian/Ubuntu。它使用来自 Amazon ECR 公共图库的以下图像的最新版本：
+ `amazon-ecs-network-sidecar`图片以获取故障排除工具的访问权限。
+ `aws-cli`图片，用于将统计报告 JSON 文件和数据包捕获文件上传到指定的 Amazon S3 存储桶。

**重要**  
本运行手册不支持 Fargate 实例。如果实例在执行期间关闭或断开连接，则此运行手册可能会失败。

 **如何工作？** 

运行手册执行以下操作：
+ 验证目标 Amazon S3 存储桶是否未授予公共读取或写入权限。
+ 确保目标 Amazon EC2 实例由 Systems Manager 管理并处于运行状态。
+ 验证实例是否运行 Linux 操作系统。
+ 从 Amazon EC2 实例收集全面的 Linux 统计数据，也可以从指定的容器中收集全面的 Linux 统计数据。
+ 将收集的统计数据上传到指定的 Amazon S3 存储桶。

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

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。

该`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. [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CollectEKSLinuxNodeStatistics/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CollectEKSLinuxNodeStatistics/description)在 Systems Manager 的 “文档” 下导航至。

1. 选择 Execute automation（执行自动化）。

1. 对于输入参数，请输入以下内容：
   + **AutomationAssumeRole （可选）：**

     允许 Systems Manager Automation 代表您执行操作的 IAM 角色的亚马逊资源名称 (ARN)。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
   + **InstanceId （必填）：**

     用于收集统计数据的 Amazon EC2 实例的 ID。
   + **S3BucketName （必填）：**

     用于将 JSON 输出从亚马逊 EC2 实例导出为文件的 Amazon S3 存储桶的名称。
   + **S3KeyPrefix （可选）：**

     用于将 Amazon EC2 实例的 JSON 输出作为文件导出的 Amazon S3 密钥前缀（子文件夹）。默认值：`AWSSupport-CollectEKSLinuxNodeStatistics`。
   + **S3BucketOwnerRoleArn （可选）：**

     有权获取 Amazon S3 存储桶和账户封禁公开访问设置、存储桶加密配置、存储桶、存储桶策略状态以及将对象上传到存储桶的 IAM 角色的 ARN。 ACLs如果未指定此参数，则运行手册将使用`AutomationAssumeRole`（如果已指定）或用户启动此 runbook（如果`AutomationAssumeRole`未指定）。
   + **S3BucketOwnerAccount （可选）：**

     拥有 Amazon S3 存储桶的 AWS 账户。如果您未指定此参数，则运行手册会假定存储桶位于此账户中。
   + **ContainerId （可选）：**

     在指定的 Amazon EC2 实例上运行的容器的 ID。
   + **NetworkTargets （可选）：**

     以逗号分隔 IPv4 的地址、用于测试 and/or DNS 解析的 DNS 名称以及使用 traceroute 进行连接的列表。

1. 选择执行。

1. 自动化启动。

1. 文档将执行以下步骤：
   + **`CheckBucketAccess`**:

     检查目标 Amazon S3 存储桶是否有可能授予对其对象的读 and/or 写公共访问权限。
   + **`AssertInstanceIsSSMManaged`**:

     确保目标 Amazon EC2 实例由 Systems Manager 管理，否则自动化将结束。
   + **`VerifyInstanceState`**:

     在尝试收集统计数据之前，验证 Amazon EC2 实例是否处于运行状态。
   + **`BranchOnVerifyLinuxInstance`**:

     在继续操作之前，请验证该实例是否为 Linux 实例。
   + **`BranchOnVerifyInstanceRunning`**:

     在继续操作之前，请验证实例是否处于运行状态。
   + **`CollectEKSLinuxNodeStatistics`**:

     从 Amazon EC2 实例收集全面的 Linux 统计数据，包括操作系统信息、网络接口统计信息、文件描述符、临时端口、防火墙规则以及可选的容器级统计信息。
   + **`GenerateStatisticsOutputS3Uri`**:

     生成 Linux 统计文件的完整 Amazon S3 URI，用作自动化文档的输出。

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)
+ [Support 自动化工作流程](https://aws.amazon.com/premiumsupport/technology/saw/)