本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWSSupport-CollectEKSLinuxNodeStatistics
描述
AWSSupport-CollectEKSLinuxNodeStatistics运行手册从属于 Amazon EKS 集群的 Amazon EC2 实例以及该实例上运行的容器(如果指定了容器 ID)收集 Linux 统计数据。containerdAmazon 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 存储桶。
所需的 IAM 权限
AutomationAssumeRole 参数需要执行以下操作才能成功使用运行手册。
该AutomationAssumeRole参数需要以下操作:
s3:GetAccountPublicAccessBlocks3:GetBucketPublicAccessBlocks3:GetBucketAcls3:GetBucketPolicyStatuss3:GetBucketLocations3:GetEncryptionConfigurations3:PutObjectssm:DescribeInstanceInformationssm:SendCommandssm:GetCommandInvocationec2: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": "*" } ] }
说明
按照这些步骤对自动化进行配置:
-
AWSSupport-CollectEKSLinuxNodeStatistics在 Systems Manager 的 “文档” 下导航至。 -
选择 Execute automation(执行自动化)。
-
对于输入参数,请输入以下内容:
-
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 进行连接的列表。
-
-
选择执行。
-
自动化启动。
-
文档将执行以下步骤:
-
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,用作自动化文档的输出。
-
-
完成后,查看“输出”部分以了解执行的详细结果。
参考
Systems Manager Automation