View a markdown version of this page

AWSSupport-SetupIPMonitoringFromVPC - AWS Systems Manager Automation Runbook 參考

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

AWSSupport-SetupIPMonitoringFromVPC

Description

AWSSupport-SetupIPMonitoringFromVPC 在指定的子網路中建立執行 Amazon Linux 2023 的臨時 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。Runbook 會持續針對選取的目標 IPs(IPv4 或 IPv6) 執行 ping、MTR、 traceroute 和 tracetcp 測試。它會將結果存放在 Amazon CloudWatch 日誌群組中,並套用指標篩選條件,以在 CloudWatch 儀表板中快速視覺化延遲和封包遺失統計資料。

額外費用

此 Runbook 會產生額外費用 AWS 。它會使用 在您帳戶中佈建 Amazon EC2 執行個體、CloudWatch 日誌群組和 CloudWatch 儀表板 AWS CloudFormation。測試執行個體會持續執行,直到您刪除 CloudFormation 堆疊為止。如果您將 RetainDashboardAndLogsOnDeletion 設定為 True(預設),CloudWatch 儀表板和日誌群組會在堆疊刪除後保留。這些資源會持續產生費用,直到您手動將其移除為止。如需定價詳細資訊,請參閱 Amazon EC2 定價Amazon CloudWatch 定價

其他資訊

您可以使用 Amazon CloudWatch Logs 中的測試結果進行網路故障診斷和分析模式和趨勢。此外,您可以在封包遺失或延遲達到閾值時,使用 Amazon Simple Notification Service 通知設定 CloudWatch 警示。您也可以在使用 開啟案例時使用這些結果 AWS 支援,以協助快速隔離問題,並在調查網路問題時縮短解決時間。

執行此自動化 (主控台)

文件類型

 自動化

擁有者

Amazon

平台

Linux、macOS、 Windows

參數

  • AutomationAssumeRole

    類型:字串

    描述:(選用) 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色,Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。

  • CloudWatchLogGroupNamePrefix

    類型:字串

    預設:/AWSSupport-SetupIPMonitoringFromVPC

    描述:(選用) 用於為測試結果建立之每個 CloudWatch 日誌群組的字首。

  • CloudWatchLogGroupRetentionInDays

    類型:字串

    有效值:1 | 3 | 5 | 7 | 14 | 30 | 60 | 90 | 120 | 150 | 180 | 365 | 400 | 545 | 731 | 1827 | 3653

    預設:7

    描述:(選用) 您想要保留網路監控結果的天數。

  • InstanceType

    類型:字串

    有效值:t2.micro | t2.small | t2.medium | t2.large | t3.micro | t3.small | t3.medium | t3.large | t4g.micro | t4g.small | t4g.medium | t4g.large

    預設:t3.micro

    描述:(選用) 監控執行個體的 Amazon EC2 執行個體類型。建議大小:t3.micro。

  • SubnetId

    類型:字串

    描述:(必要) 監控執行個體的子網路 ID。請注意,如果您指定私有子網路,則必須確保有網際網路存取權,以允許監控執行個體設定測試 (例如,安裝 CloudWatch 代理程式、與 AWS Systems Manager 和 CloudWatch 互動)。

  • TargetIPs

    類型:字串

    描述:(必要) 要監控的 IPv4 或 IPv6 地址逗號分隔清單。不可使用空格。大小上限為 255 字元。請注意,如果您提供無效的 IP,則自動化將會失敗並復原測試設定。

  • TestInstanceSecurityGroupId

    類型:字串

    描述:(選用) 測試執行個體的安全群組 ID。如果未指定,自動化會在執行個體建立期間建立一個。確定安全群組允許對監控 IPs傳出存取。

  • TestInstanceProfileName

    類型:字串

    描述:(選用) 測試 AWS Identity and Access Management 執行個體的現有執行個體描述檔名稱。如果未指定,自動化會在執行個體建立期間建立一個。角色必須具有下列許可:logs:CreateLogStreamlogs:DescribeLogStreamslogs:DescribeLogGroupslogs:PutLogEvents以及 AWS 受管政策 AmazonSSMManagedInstanceCore

  • TestInterval

    類型:字串

    描述:(選用) 測試間隔之間的分鐘數。預設值為1分鐘,最大值為10分鐘。

  • RetainDashboardAndLogsOnDeletion

    類型:字串

    描述:(選用) False指定 在刪除 CloudFormation 堆疊時刪除 CloudWatch 儀表板和日誌群組。預設值為 True。根據預設, Runbook 會保留儀表板和日誌。當不再需要它們時,您必須手動將其刪除。

必要的 IAM 許可

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

警告

建議傳遞TestInstanceProfileName參數或確保有安全防護機制,以防止濫用可變 IAM 許可。

建議執行自動化的使用者連接 AmazonSSMAutomationRole IAM 受管政策。此外,使用者必須將以下政策連接至其使用者帳戶、群組或角色:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "iam:CreateRole", "iam:CreateInstanceProfile", "iam:GetRole", "iam:GetInstanceProfile", "iam:DetachRolePolicy", "iam:AttachRolePolicy", "iam:PassRole", "iam:AddRoleToInstanceProfile", "iam:GetRolePolicy", "iam:RemoveRoleFromInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DeleteInstanceProfile", "iam:PutRolePolicy", "iam:TagRole" ], "Resource": [ "arn:aws:iam::111122223333:role/SetupIPMonitoringFromVPC*", "arn:aws:iam::111122223333:instance-profile/SetupIPMonitoringFromVPC*" ], "Effect": "Allow" }, { "Action": [ "cloudformation:CreateStack", "cloudformation:CreateChangeSet", "cloudformation:DeleteStack", "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudwatch:PutDashboard", "cloudwatch:DeleteDashboards", "ec2:AuthorizeSecurityGroupEgress", "ec2:CreateSecurityGroup", "ec2:CreateLaunchTemplate", "ec2:DeleteSecurityGroup", "ec2:DescribeImages", "ec2:DescribeSubnets", "ec2:DescribeInstanceTypes", "ec2:DescribeVpcs", "ec2:DeleteLaunchTemplate", "ec2:DeleteSecurityGroup", "ec2:RunInstances", "ec2:TerminateInstances", "ec2:DescribeInstanceStatus", "ec2:CreateTags", "ec2:AssignIpv6Addresses", "ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeSecurityGroups", "ec2:DescribeLaunchTemplates", "ec2:RevokeSecurityGroupEgress", "logs:CreateLogGroup", "logs:DeleteLogGroup", "logs:PutMetricFilter", "logs:PutRetentionPolicy", "logs:TagResource", "ssm:DescribeInstanceInformation", "ssm:GetParameter", "ssm:GetParameters", "ssm:SendCommand", "ssm:ListCommands", "ssm:ListCommandInvocations" ], "Resource": [ "*" ], "Effect": "Allow" } ] }

如果提供 TestInstanceProfileName 參數,則不需要下列 IAM 許可來執行 Runbook:

  • iam:CreateRole

  • iam:CreateInstanceProfile

  • iam:DetachRolePolicy

  • iam:AttachRolePolicy

  • iam:AddRoleToInstanceProfile

  • iam:RemoveRoleFromInstanceProfile

  • iam:DeleteRole

  • iam:DeleteRolePolicy

  • iam:DeleteInstanceProfile

文件步驟

  1. aws:executeAwsApi - 描述提供的子網路,以取得 VPC ID 和 IPv6 CIDR 區塊關聯狀態。

  2. aws:executeScript - 驗證提供的目標 IPs 在語法上是正確的 IPv4 和/或 IPv6 地址、取得所選執行個體類型的架構,並確認子網路是否具有 IPv6 集區關聯,如果任何目標 IP 是 IPv6。

  3. aws:createStack - 建立佈建測試 Amazon EC2 執行個體、IAM 執行個體描述檔 (若未提供)、安全群組 (若未提供)、CloudWatch 日誌群組和 CloudWatch 儀表板的 CloudFormation 堆疊。

    (清除) 如果步驟失敗:

    aws:executeScript - 描述 CloudFormation 堆疊事件以識別失敗原因。

    aws:deleteStack - 刪除 CloudFormation 堆疊和所有相關聯的資源。

  4. aws:waitForAwsResourceProperty - 等待 CloudFormation 堆疊完成建立。

    (清除) 如果步驟失敗:

    aws:executeScript - 描述 CloudFormation 堆疊事件以識別失敗原因。

    aws:deleteStack - 刪除 CloudFormation 堆疊和所有相關聯的資源。

  5. aws:executeScript - 描述 CloudFormation 堆疊資源,以取得測試執行個體 ID、安全群組 ID、IAM 角色、執行個體描述檔和儀表板名稱。

    (清除) 如果步驟失敗:

    aws:executeScript - 描述 CloudFormation 堆疊事件以識別失敗原因。

    aws:deleteStack - 刪除 CloudFormation 堆疊和所有相關聯的資源。

  6. aws:waitForAwsResourceProperty - 等待測試執行個體成為受管執行個體。

    (清除) 如果步驟失敗:

    aws:deleteStack - 刪除 CloudFormation 堆疊和所有相關聯的資源。

  7. aws:runCommand - 在測試執行個體traceroute上安裝 CloudWatch 代理程式mtr、 和 。

    (清除) 如果步驟失敗:

    aws:deleteStack - 刪除 CloudFormation 堆疊和所有相關聯的資源。

  8. aws:runCommand - 定義每個所提供 IPs 的網路測試指令碼 (MTR、ping、追蹤路徑和追蹤路由)。

    (清除) 如果步驟失敗:

    aws:deleteStack - 刪除 CloudFormation 堆疊和所有相關聯的資源。

  9. aws:runCommand - 使用每 TestInterval 分鐘執行的系統計時器,開始網路測試並排程後續執行。

    (清除) 如果步驟失敗:

    aws:deleteStack - 刪除 CloudFormation 堆疊和所有相關聯的資源。

  10. aws:runCommand - 設定 CloudWatch 代理程式,將測試結果從 推送/home/ec2-user/logs/至 CloudWatch Logs。

    (清除) 如果步驟失敗:

    aws:deleteStack - 刪除 CloudFormation 堆疊和所有相關聯的資源。

  11. aws:runCommand - 在 中設定測試結果的日誌輪換/home/ec2-user/logs/

  12. aws:executeScript - 為 CloudFormation 堆疊建立的所有 CloudWatch 日誌群組設定保留政策。

  13. aws:executeScript - 建立用於 ping 延遲和 ping 封包遺失的 CloudWatch 日誌群組指標篩選條件。

    (清除) 如果步驟失敗:

    aws:deleteStack - 刪除 CloudFormation 堆疊和所有相關聯的資源。

  14. aws:executeScript - 更新 CloudWatch 儀表板,以包含 ping 延遲和 ping 封包遺失統計資料的小工具。

    (清除) 如果步驟失敗:

    aws:executeAwsApi - 刪除存在的 CloudWatch 儀表板。

    aws:deleteStack - 刪除 CloudFormation 堆疊和所有相關聯的資源。

  15. aws:branch - 評估 SleepTime 參數。如果設定為 0,自動化會結束而不刪除堆疊。

  16. aws:sleep - 等待指定的 SleepTime 持續時間,然後再刪除 CloudFormation 堆疊。

  17. aws:deleteStack - 刪除 CloudFormation 堆疊。根據 RetainDashboardAndLogsOnDeletion 參數,CloudWatch 儀表板和日誌群組會保留或刪除。

    (清除) 如果堆疊刪除失敗:

    aws:executeScript - 描述 CloudFormation 堆疊事件以識別刪除失敗原因。

輸出

updateCloudWatchDashboard.StackUrl - CloudFormation 堆疊的 URL。

updateCloudWatchDashboard.DashboardUrl - CloudWatch 儀表板的 URL。

updateCloudWatchDashboard.DashboardName - CloudWatch 儀表板的名稱。

updateCloudWatchDashboard.LogGroups - 已建立的 CloudWatch 日誌群組清單。

describeStackResources.HelperInstanceId - 測試執行個體 ID。

describeStackResources.StackName - CloudFormation 堆疊名稱。