

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

 **描述** 

 `AWSSupport-SetupIPMonitoringFromVPC`在指定子网中创建亚马逊弹性计算云 (Amazon EC2) 实例，并通过持续运行 ping、MTR、traceroute 和 tracetcp 测试来监控选定的 IPs 目标IPv4 （ IPv6或）。结果存储在 Amazon CloudWatch Logs 日志中，并应用指标筛选器在 CloudWatch 控制面板中快速可视化延迟和丢包统计数据。

 **附加信息** 

 CloudWatch 日志数据可用于网络故障排除和pattern/trends. Additionally, you can configure CloudWatch alarms with Amazon SNS notifications when packet loss and/or延迟达到阈值的分析。这些数据还可以在开案时使用 AWS 支持，以帮助快速隔离问题，并在调查网络问题时缩短解决时间。

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

**文档类型**

自动化

**所有者**

Amazon

**平台**

Linux、macOS、Windows

**参数**
+ AutomationAssumeRole

  类型：字符串

  描述：（可选）允许 Systems Manager Automation 代表您执行操作 AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称（ARN）。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
+ 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

  描述：（可选） EC2救援实例的 EC2 实例类型。推荐尺寸：t3.micro。
+ SubnetId

  类型：字符串

  描述：（必需）监控实例的子网 ID。请注意，如果您指定私有子网，则必须确保可以访问 Internet 才能允许监控实例设置测试（也就是说，安装 CloudWatch 日志代理，与 Systems Manager 交互和 CloudWatch）。
+ 目标 IPs

  类型：字符串

  描述：（必填）用逗号分隔的 IPv4s 和/或 IPv6s 要监视的列表。不允许使用空格。最大大小为 255 个字符。注意，如果提供的 IP 无效，则 Automation 将失败并回滚测试设置。
+ TestInstanceSecurityGroupId

  类型：字符串

  描述：（可选）测试实例的安全组 ID。如果未指定，则自动化会在创建实例期间创建一个实例。确保安全组允许对监控进行出站访问 IPs。
+ TestInstanceProfileName

  类型：字符串

  描述：（可选）测试实例的现有 IAM 实例配置文件的名称。如果未指定，则自动化会在创建实例期间创建一个实例。该角色必须具有以下权限：`logs:CreateLogStream``logs:DescribeLogGroups`、`logs:DescribeLogStreams`、`logs:PutLogEvents`和 AWS 托管策略`AmazonSSMManagedInstanceCore`。
+ TestInterval

  类型：字符串

  描述：（可选）测试间隔之间的分钟数。默认值为`1`分钟，最大值为`10`分钟。
+ RetainDashboardAndLogsOnDeletion

  类型：字符串

  描述：（可选）指定`False`在删除 AWS AWS CloudFormation 堆栈时删除 Amazon CloudWatch 控制面板和日志。默认值为 `True`。默认情况下，控制面板和日志会被保留，当不再需要它们时，需要手动将其删除。

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。

**警告**  
 建议传递`TestInstanceProfileName`参数或确保设置安全护栏，以防止滥用可变的 IAM 权限。

 建议运行自动化的用户附加 A **mazon Role SSMAutomation I** AM 托管策略。此外，用户还必须将以下策略附加到其用户账户、组或角色：

------
#### [ 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 权限即可执行运行手册：
+ 我是：CreateRole
+ 我是：CreateInstanceProfile
+ 我是：DetachRolePolicy
+ 我是：AttachRolePolicy
+ 我是：AddRoleToInstanceProfile
+ 我是：RemoveRoleFromInstanceProfile
+ 我是：DeleteRole
+ 我是：DeleteRolePolicy
+ 我是：DeleteInstanceProfile

 **文档步骤** 

1.  **`aws:executeAwsApi`**-描述提供的子网以获取 VPC ID 和 IPv6 CIDR 区块关联状态。

1.  **`aws:executeScript`**-验证提供的目标在语法上是否正确 IPv4 和/或 IPv6 地址，获取所选实例类型的架构，如果有任何目标 IP，则验证子网是否 IPs 存在 IPv6 池关联。 IPv6

1.  **`aws:createStack`**-创建一个 AWS CloudFormation 堆栈，用于预置测试 Amazon EC2 实例、IAM 实例配置文件（如果未提供）、安全组（如果未提供）、 CloudWatch 日志组和 CloudWatch 控制面板。

   （清理）如果步骤失败：

    **`aws:executeScript`**-描述 CloudFormation 堆栈事件以确定失败原因。

    **`aws:deleteStack`**-删除 CloudFormation 堆栈和所有相关资源。

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

   （清理）如果步骤失败：

    **`aws:executeScript`**-描述 CloudFormation 堆栈事件以确定失败原因。

    **`aws:deleteStack`**-删除 CloudFormation 堆栈和所有相关资源。

1.  **`aws:executeScript`**-描述用于获取测试实例 ID、安全组 ID、IAM 角色、实例配置文件和控制面板名称的 CloudFormation 堆栈资源。

   （清理）如果步骤失败：

    **`aws:executeScript`**-描述 CloudFormation 堆栈事件以确定失败原因。

    **`aws:deleteStack`**-删除 CloudFormation 堆栈和所有相关资源。

1.  **`aws:waitForAwsResourceProperty`** - 等待测试实例变为托管实例。

   （清理）如果步骤失败：

    **`aws:deleteStack`**-删除 CloudFormation 堆栈和所有相关资源。

1.  **`aws:runCommand`**-在测试实例上安装 CloudWatch 代理。

   （清理）如果步骤失败：

    **`aws:deleteStack`**-删除 CloudFormation 堆栈和所有相关资源。

1.  **`aws:runCommand`**-为所提供的每个脚本定义网络测试脚本（MTR、ping、tracepath 和 traceroute）。 IPs

   （清理）如果步骤失败：

    **`aws:deleteStack`**-删除 CloudFormation 堆栈和所有相关资源。

1.  **`aws:runCommand`**-使用每 TestInterval 分钟运行一次 cronjobs 启动网络测试并安排后续执行。

   （清理）如果步骤失败：

    **`aws:deleteStack`**-删除 CloudFormation 堆栈和所有相关资源。

1.  **`aws:runCommand`**-将 CloudWatch 代理配置为将测试结果从推送`/home/ec2-user/logs/`到 CloudWatch 日志。

   （清理）如果步骤失败：

    **`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 堆栈事件以确定删除失败的原因。

 **输出** 

updateCloudWatch仪表板。 StackUrl - CloudFormation 堆栈的网址。

updateCloudWatch仪表板。 DashboardUrl - CloudWatch 仪表板的网址。

updateCloudWatch仪表板。 DashboardName - CloudWatch 仪表板的名称。

updateCloudWatch仪表板。 LogGroups -创建的 CloudWatch 日志组列表。

describeStackResources。 HelperInstanceId -测试实例 ID。

describeStackResources。 StackName - CloudFormation 堆栈名称。