本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWSSupport-CollectEKSLinuxNodeStatistics
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 儲存貯體。
必要的 IAM 許可
AutomationAssumeRole 參數需要下列動作才能成功使用 Runbook。
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": "*" } ] }
指示
請依照下列步驟設定自動化:
-
在文件下的 Systems Manager
AWSSupport-CollectEKSLinuxNodeStatistics中導覽至 。 -
選擇 Execute automation (執行自動化)。
-
針對輸入參數,輸入下列內容:
-
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 的連線。
-
-
選取執行。
-
自動化會啟動。
-
文件會執行下列步驟:
-
CheckBucketAccess:檢查目標 Amazon S3 儲存貯體是否可能授予其物件的讀取和/或寫入公開存取權。
-
AssertInstanceIsSSMManaged:確保目標 Amazon EC2 執行個體由 Systems Manager 管理,否則自動化會結束。
-
VerifyInstanceState:在嘗試收集統計資料之前,驗證 Amazon EC2 執行個體是否處於執行中狀態。
-
BranchOnVerifyLinuxInstance:在繼續之前,驗證執行個體是否為 Linux 執行個體。
-
BranchOnVerifyInstanceRunning:在繼續之前,確認執行個體處於執行中狀態。
-
CollectEKSLinuxNodeStatistics:從 Amazon EC2 執行個體收集完整的 Linux 統計資料,包括作業系統資訊、網路介面統計資料、檔案描述項、暫時性連接埠、防火牆規則,以及選用的容器層級統計資料。
-
GenerateStatisticsOutputS3Uri:將完整的 Amazon S3 URI 產生到 Linux 統計資料檔案,以做為自動化文件的輸出。
-
-
完成後,請檢閱輸出區段以取得執行的詳細結果。
參考
Systems Manager Automation