Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

创建停止、终止、重启或恢复实例的警报

利用 Amazon CloudWatch 警报操作,您可创建自动停止、终止、重启或恢复 实例的警报。当不再需要某个实例运行时,您可使用停止或终止操作来帮助您节省资金。如果发生了系统损害,您可使用重启和恢复操作自动重启这些实例或将它们恢复到新硬件上。

您创建的每个警报操作均使用警报操作 ARN。一组 ARN 更安全,因为它要求您的账户中有 EC2ActionsAccess IAM 角色。利用此 IAM 角色,您可执行停止、终止或重启操作 - 以前如果您使用的是 IAM 角色,则无法执行操作。使用以前的警报操作 ARN 的现有警报不需要此 IAM 角色,但建议您在编辑使用这些 ARN 的现有警报时更改 ARN 并添加此角色。

EC2ActionsAccess 角色使 AWS 能够代表您执行警报操作。当您首次使用 Amazon EC2 或 Amazon CloudWatch 控制台创建警报操作时,AWS 将自动为您创建此角色。

在许多情况下,您可能需要自动终止或停止实例。例如,您可能拥有专用于批工资单处理工作或科学计算任务的实例,这些实例在运行一段时间后就完成了其工作。与其让这些实例空闲 (并产生费用),不如将其停止或终止以节省开支。使用停止警报操作和终止警报操作的主要区别是,停止的警报可以在需要时轻松重启,还可以保留相同的实例 ID 和根卷。而终止的实例则无法重新启动。如此就必须启动一个新的实例。

您可以向为 Amazon EC2 每个实例指标设置的任何警报添加停止、终止、重启或恢复操作,这些指标包括 Amazon CloudWatch 提供的基本和详细监控指标 (在 AWS/EC2 命名空间中),以及包含 InstanceId 维度的任何自定义指标,只要其值引用有效运行的 Amazon EC2 实例。

控制台支持

可使用 Amazon EC2 控制台或 CloudWatch 控制台创建警报。本文档中的过程使用 Amazon EC2 控制台。有关使用 CloudWatch 控制台的过程,请参阅 Amazon CloudWatch 用户指南 中的创建停止、终止、重新启动或恢复实例的警报

权限

如果您是 AWS Identity and Access Management (IAM) 用户,您必须拥有以下创建或修改警报的权限:

  • ec2:DescribeInstanceStatusec2:DescribeInstances - 针对有关 Amazon EC2 实例状态指标的所有警报

  • ec2:StopInstances - 针对包含停止操作的警报

  • ec2:TerminateInstances - 针对包含终止操作的警报

  • ec2:DescribeInstanceRecoveryAttribute, 和 ec2:RecoverInstances - 针对包含恢复操作的警报

如果您拥有对 Amazon CloudWatch 而不是 Amazon EC2 的读/写权限,则仍然可以创建警报,但无法对 Amazon EC2 实例执行停止或终止操作。但是,如果您之后获得使用关联 Amazon EC2 API 的权限,将执行您之前创建的警报操作。有关 IAM 权限的更多信息,请参阅 IAM 用户指南 中的权限与策略

如果您想要通过警报操作来使用 IAM 角色停止、终止或重启实例,则只能使用 EC2ActionsAccess 角色。其他 IAM 角色不受支持。如果您正在使用其他 IAM 角色,则无法停止、终止或重启实例。但是,您仍然可以查看警报状态和执行任何其他操作,如 Amazon SNS 通知或 Auto Scaling 策略。

向 Amazon CloudWatch 警报添加停止操作

可以创建当达到一定阈值后停止 Amazon EC2 实例的警报。例如,您可能运行了开发或测试实例而偶尔忘记将其关闭。可以创建当平均 CPU 利用率低于 10% 达 24 小时时触发的警报,同时告知其为空闲并不再使用。您可以根据需要调整阈值、持续时间和周期,还可以添加 Amazon Simple Notification Service (Amazon SNS) 通知,以便您在触发警报后能够收到电子邮件。

可以停止或终止将 Amazon EBS 卷用作根设备的实例,但只能终止将实例存储用作根设备的实例。

使用 Amazon EC2 控制台创建停止空闲实例的警报

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中的 INSTANCES 下,选择 Instances

  3. 选择实例。在 Monitoring 选项卡上,选择 Create Alarm

  4. Alarm Details for 对话框中,选择 Create Alarm

  5. 如果您要在触发警报时接收电子邮件,请在 Create Alarm for 对话框中,针对 Send a notification to 选择一个现有 Amazon SNS 主题,或者选择 Create Topic 创建一个新主题。

    要创建新主题,请对 Send a notification to 输入主题的名称,然后对 With these recipients 输入收件人的电子邮件地址 (以逗号分隔)。待警报创建完成,您将收到一封订阅确认电子邮件,而您必须接受方可收到该主题的通知。

  6. 选择 Take the action,然后选择 Stop this instance 单选按钮。

  7. 如果出现提示,请选择 Create IAM role: EC2ActionsAccess 以自动创建 IAM 角色,这样在此警报触发时 AWS 可自动代表您停止实例。

  8. 对于 Whenever,选择想要使用的统计信息,然后选择指标。在此示例中,选择 Average (平均)CPU Utilization (CPU 利用率)

  9. 对于 Is,定义指标阈值。在此示例中,键入 10%。

  10. 对于 For at least,选择警报的采样周期。在此示例中,键入 24 个连续 1 小时时间段。

  11. 要更改警报的名称,可对 Name this alarm 键入新名称。警报名称必须仅包含 ASCII 字符。

    如果您不键入警报名称,Amazon CloudWatch 会自动为您创建一个。

    注意

    可以在创建警报前根据自己的要求调整警报配置,也可以在之后编辑配置。这包括指标、阈值、时长、操作和通知等设置。但是,警报创建后其名称无法再次编辑。

  12. 选择 Create Alarm

向 Amazon CloudWatch 警报添加终止操作

可以创建当达到一定阈值时自动终止 EC2 实例的警报 (只要该实例未启用终止保护)。例如,某个实例已经完成工作,您不再需要此实例而想将其终止。如果可能在之后使用该实例,则应该选择停止而不是终止。有关对实例启用和禁用终止保护的信息,请参阅Amazon EC2 用户指南(适用于 Linux 实例) 中的为实例启用终止保护

使用 Amazon EC2 控制台创建终止空闲实例的警报

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中的 INSTANCES 下,选择 Instances

  3. 选择实例。在 Monitoring 选项卡上,选择 Create Alarm

  4. Alarm Details for 对话框中,选择 Create Alarm

  5. 如果您要在触发警报时接收电子邮件,请在 Create Alarm for 对话框中,针对 Send a notification to 选择一个现有 Amazon SNS 主题,或者选择 Create Topic 创建一个新主题。

    要创建新主题,请对 Send a notification to 输入主题的名称,然后对 With these recipients 输入收件人的电子邮件地址 (以逗号分隔)。待警报创建完成,您将收到一封订阅确认电子邮件,而您必须接受方可收到该主题的通知。

  6. 选择 Take the action,然后选择 Terminate this instance

  7. 如果出现提示,请选择 Create IAM role: EC2ActionsAccess 以自动创建 IAM 角色,这样在此警报触发时 AWS 可自动代表您停止实例。

  8. 对于 Whenever,选择统计数据,然后选择指标。在此示例中,选择 Average (平均)CPU Utilization (CPU 利用率)

  9. 对于 Is,定义指标阈值。在此示例中,键入 10%。

  10. 对于 For at least,选择警报的采样周期。在此示例中,键入 24 个连续 1 小时时间段。

  11. 要更改警报的名称,可对 Name this alarm 键入新名称。警报名称必须仅包含 ASCII 字符。

    如果您不键入警报名称,Amazon CloudWatch 会自动为您创建一个。

    注意

    可以在创建警报前根据自己的要求调整警报配置,也可以在之后编辑配置。这包括指标、阈值、时长、操作和通知等设置。但是,警报创建后其名称无法再次编辑。

  12. 选择 Create Alarm

向 Amazon CloudWatch 警报添加重启操作

您可创建监控 Amazon EC2 实例并自动重启此实例的 Amazon CloudWatch 警报。在实例运行状况检查失败时,推荐重启警报操作 (与恢复警报操作相反,该操作适合系统运行状况检查失败的情况)。实例重启相当于操作系统重启。在许多情况下,只需要几分钟时间即可重启您的实例。重启实例时,其仍驻留在相同的物理主机上,因此您的实例将保留其公有 DNS 名称、私有 IP 地址及其实例存储卷上的任何数据。

与停止并重新启动您的实例不同,重启实例不会启动新的实例计费小时。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的重启您的实例

重要

为了避免重启操作与恢复操作之间的竞争情况,请避免为重启警报和恢复警报设置相同的评估期。我们建议您将重启警报设置为 3 个 1 分钟的评估期。

使用 Amazon EC2 控制台创建重启实例的警报

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中的 INSTANCES 下,选择 Instances

  3. 选择实例。在 Monitoring 选项卡上,选择 Create Alarm

  4. Alarm Details for 对话框中,选择 Create Alarm

  5. 如果您要在触发警报时接收电子邮件,请在 Create Alarm for 对话框中,针对 Send a notification to 选择一个现有 Amazon SNS 主题,或者选择 Create Topic 创建一个新主题。

    要创建新主题,请对 Send a notification to 输入主题的名称,然后对 With these recipients 输入收件人的电子邮件地址 (以逗号分隔)。待警报创建完成,您将收到一封订阅确认电子邮件,而您必须接受方可收到该主题的通知。

  6. 选择 Take the action,然后选择 Reboot this instance

  7. 如果出现提示,请选择 Create IAM role: EC2ActionsAccess 以自动创建 IAM 角色,这样在此警报触发时 AWS 可自动代表您停止实例。

  8. 对于 Whenever,选择“Status Check Failed (Instance)”。

  9. 对于 For at least,键入 3

  10. 对于 consecutive period(s) of,选择 1 minute

  11. 要更改警报的名称,可对 Name of alarm 键入新名称。警报名称必须仅包含 ASCII 字符。

    如果您不键入警报名称,Amazon CloudWatch 会自动为您创建一个。

  12. 选择 Create Alarm

向 Amazon CloudWatch 警报添加恢复操作

您可以创建 Amazon CloudWatch 警报来监控 Amazon EC2 实例。如果实例因需要 AWS 参与才能修复的基础硬件故障或问题而受损,您可自动恢复实例。无法恢复终止的实例。恢复的实例与原始实例相同,包括实例 ID、私有 IP 地址、弹性 IP 地址以及所有实例元数据。

StatusCheckFailed_System 警报触发且恢复操作启动时,您在创建警报及关联恢复操作时所选择的 Amazon SNS 主题将向您发出通知。在实例恢复过程中,实例将在重启时迁移,并且内存中的所有数据都将丢失。当该过程完成后,会向您已配置警报的 SNS 主题发布信息。任何订阅此 SNS 主题的用户都将收到一封电子邮件通知,其中包括恢复尝试的状态以及任何进一步的指示。您将注意到,实例会在已恢复的实例上重启。

下列问题可能导致系统状态检查失败:

  • 网络连接丢失

  • 系统电源损耗

  • 物理主机上的软件问题

  • 物理主机上影响到网络连接状态的硬件问题

只有具有以下特性的实例支持恢复操作:

  • 使用 C3、C4、C5、M3、M4、R3、R4、T2 或 X1 实例类型

  • 在 VPC 中 (非 EC2-Classic 中) 运行

  • 使用共享租赁 (租赁属性设置为 default)

  • 仅使用 EBS 卷 (不配置实例存储卷)。有关更多信息,请参阅已禁用“恢复此实例”

如果您的实例具有公有 IP 地址,它会在恢复后保留公有 IP 地址。

重要

为了避免重启操作与恢复操作之间的竞争情况,请避免为重启警报和恢复警报设置相同的评估期。我们建议您将恢复警报设置为 2 个 1 分钟的评估期。

使用 Amazon EC2 控制台创建恢复实例的警报

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中的 INSTANCES 下,选择 Instances

  3. 选择实例。在 Monitoring 选项卡上,选择 Create Alarm

  4. Alarm Details for 对话框中,选择 Create Alarm

  5. 要在触发警报时接收电子邮件,请在 Create Alarm for 对话框中,针对 Send a notification to 选择一个现有 Amazon SNS 主题,或者选择 Create Topic 创建一个新主题。

    要创建新主题,请对 Send a notification to 输入主题的名称,然后对 With these recipients 输入收件人的电子邮件地址 (以逗号分隔)。待警报创建完成,您将收到一封订阅确认电子邮件,而您必须接受方可收到该主题的电子邮件。

  6. 选择 Take the action,然后选择 Recover this instance

  7. 如果出现提示,请选择 Create IAM role: EC2ActionsAccess 以自动创建 IAM 角色,这样在此警报触发时 AWS 可自动代表您停止实例。

  8. 对于 Whenever,选择“Status Check Failed (System)”。

  9. 对于 For at least,键入 2

  10. 对于 consecutive period(s) of,选择 1 minute

  11. 要更改警报的名称,可对 Name of alarm 键入新名称。警报名称必须仅包含 ASCII 字符。

    如果您不键入警报名称,Amazon CloudWatch 会自动为您创建一个。

  12. 选择 Create Alarm

使用 Amazon CloudWatch 控制台查看警报和操作历史记录

您可以在 Amazon CloudWatch 控制台中查看警报和操作历史记录。Amazon CloudWatch 会保留最近两周的警报和操作历史记录。

要查看已触发的警报和操作的历史记录

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格中,选择 Alarms

  3. 选择一个警报。

  4. Details 选项卡显示最近的状态转换以及时间和指标值。

  5. 选择 History 选项卡可以查看最近的历史记录条目。

Amazon CloudWatch 警报操作场景

可以使用 Amazon EC2 控制台创建当满足一定条件时停止或终止 Amazon EC2 实例的警报操作。在下方的控制台页面屏幕截图中,您设置了警报操作,我们对设置进行了编号。我们还对后续场景中的设置进行了编号,帮助您创建合适的操作。

Create Alarm for “”对话框

场景 1:停止空闲开发与测试实例

创建当用于软件开发或测试的实例空闲达到至少 1 小时时停止该实例的警报。

设置

Stop

最高

CPU 利用率

<=

10%

60 minutes

1

场景 2:停止空闲实例

创建一个当实例空闲达到 24 小时时停止该实例并发送电子邮件的警报。

设置

Stop and email

平均值

CPU 利用率

<=

5%

60 minutes

24

场景 3:出现异常高流量时发送关于 Web 服务器的电子邮件

创建一个当实例的出站网络流量每天超过 10 GB 时发送电子邮件的警报。

设置

电子邮件

总计

NetworkOut

>

10GB

1 天

1

场景 4:出现异常高流量时停止 Web 服务器

创建当出站流量超过每小时 1 GB 时停止实例并发送短消息 (SMS) 的警报。

设置

Stop and send SMS

总计

NetworkOut

>

1GB

1 小时

1

场景 5:停止出现内存泄漏的实例

创建当内存利用率达到或超过 90% 时停止实例的警报,让应用程序日志可以被检索用于故障排除。

注意

MemoryUtilization 指标是一种自定义指标。要使用 MemoryUtilization 指标,您必须为 Linux 实例安装 Perl 脚本。有关更多信息,请参阅为 Amazon EC2 Linux 实例监控内存和磁盘指标

设置

Stop

最高

MemoryUtilization

>=

90%

1 minute

1

场景 6:停止受损的实例

创建当实例连续 3 次状态检查 (每隔 5 分钟执行一次) 皆为故障时将其停止的警报。

设置

Stop

平均值

StatusCheckFailed_System

>=

1

15 分钟

1

场景 7:当批处理工作完成时终止实例

创建当实例不再发送结果数据时终止运行批工作的实例的警报。

设置

Terminate

最高

网络输出

<=

100000 bytes

5 minutes

1