

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

# `AWSSupport-SetupIPMonitoringFromVPC`
<a name="automation-awssupport-setupipmonitoringfromvpc"></a>

 **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 支援，以協助快速隔離問題，並在調查網路問題時縮短解決時間。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-SetupIPMonitoringFromVPC) 

**文件類型**

 自動化

**擁有者**

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 \$1 3 \$1 5 \$1 7 \$1 14 \$1 30 \$1 60 \$1 90 \$1 120 \$1 150 \$1 180 \$1 365 \$1 400 \$1 545 \$1 731 \$1 1827 \$1 3653

  預設：7

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

  類型：字串

  有效值：t2.micro \$1 t2.small \$1 t2.medium \$1 t2.large \$1 t3.micro \$1 t3.small \$1 t3.medium \$1 t3.large \$1 t4g.micro \$1 t4g.small \$1 t4g.medium \$1 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:CreateLogStream`、`logs:DescribeLogStreams`、 `logs:DescribeLogGroups`和 `logs: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 區塊關聯狀態。

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

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

   (清除) 如果步驟失敗：

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

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

1.  ** `aws:waitForAwsResourceProperty` ** - 等待 CloudFormation 堆疊完成建立。

   (清除) 如果步驟失敗：

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

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

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

   (清除) 如果步驟失敗：

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

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

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

   (清除) 如果步驟失敗：

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

1.  ** `aws:runCommand` ** - 在測試執行個體上安裝 CloudWatch 代理程式。

   (清除) 如果步驟失敗：

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

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

   (清除) 如果步驟失敗：

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

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

   (清除) 如果步驟失敗：

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

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

   (清除) 如果步驟失敗：

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

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

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

1.  ** `aws:executeScript` ** - 為 ping 延遲和 ping 封包遺失建立 CloudWatch 日誌群組指標篩選條件。

   (清除) 如果步驟失敗：

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

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

   (清除) 如果步驟失敗：

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

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

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

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

1.  ** `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 堆疊名稱。