View a markdown version of this page

AWSSupport-SetupIPMonitoringFromVPC - AWS Systems Manager Automation Runbook 參考

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

AWSSupport-SetupIPMonitoringFromVPC

Description

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

其他資訊

CloudWatch Logs 資料可用於網路故障診斷和分析模式/趨勢。此外,您可以在封包遺失和/或延遲達到閾值時,使用 Amazon SNS 通知設定 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

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

  • SubnetId

    類型:字串

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

  • TargetIPs

    類型:字串

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

  • TestInstanceSecurityGroupId

    類型:字串

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

  • TestInstanceProfileName

    類型:字串

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

  • TestInterval

    類型:字串

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

  • RetainDashboardAndLogsOnDeletion

    類型:字串

    描述:(選用) False指定 在刪除 AWS AWS CloudFormation 堆疊時刪除 Amazon CloudWatch 儀表板和日誌。預設值為 True。根據預設,儀表板和日誌會保留,且不再需要時需要手動刪除。

必要的 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 儀表板的 AWS 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 - 在測試執行個體上安裝 CloudWatch 代理程式。

    (清除) 如果步驟失敗:

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

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

    (清除) 如果步驟失敗:

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

  9. aws:runCommand - 使用每 TestInterval 分鐘執行的 cronjob 開始網路測試並排程後續執行。

    (清除) 如果步驟失敗:

    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 堆疊名稱。