实例的状态检查
使用实例状态监控,您可以快速确定 Amazon EC2 是否已经检测到可能阻止您的实例运行应用程序的任何问题。Amazon EC2 会对每个运行的 EC2 实例执行自动检查以识别硬件和软件问题。您可以通过查看这些状态检查的结果来识别特定的和可检测的问题。事件状态数据扩充了 Amazon EC2 已提供的有关每个实例状态(如 pending
、running
、stopping
)的信息以及 Amazon CloudWatch 监控的利用率指标(CPU 利用率、网络流量和磁盘活动)。
状态检查每分钟进行一次,会返回一个通过或失败状态。如果所有的检查都通过,则实例的整体状态是OK。如果有一个或多个检查故障,则整体状态为受损。状态检查是内置到 Amazon EC2 中的,所以不能禁用或删除。
当状态检查失败时,状态检查的相应 CloudWatch 指标将增加。有关更多信息,请参阅状态检查指标。您可以使用这些指标创建基于状态检查结果触发的 CloudWatch 警报。例如,您可以创建一个警报来提醒您在一个指定实例上的状态检查中返回了故障状态。有关更多信息,请参阅创建和编辑状态检查警报。
您也可以创建 Amazon CloudWatch 警报,用于监控 Amazon EC2 实例并在实例由于潜在问题而受损时自动恢复实例。有关更多信息,请参阅恢复实例。
状态检查类型
我们提供了系统状态检查和实例状态检查。
系统状态检查
系统状态检查监控您的实例在其上运行的 Amazon 系统。这些检查会检测出需要 Amazon 参与修复的深层实例问题。如果系统状态检查失败,您可以选择等待 Amazon 修复问题,也可以自行解决问题。对于由 Amazon EBS 支持的实例,您也可自行停止和启动实例,在大多数情况下,这会导致实例被迁移至新的主机。对于由实例存储支持的 Linux 实例,您可以终止并替换实例。对于 Windows 实例,根卷必须是 Amazon EBS 卷;根卷不支持实例存储。请注意,实例存储卷是临时的,实例停止后所有数据都会丢失。
以下是可能导致系统状态检查失败的问题的示例:
-
网络连接丢失
-
系统电源损耗
-
物理主机上的软件问题
-
物理主机上影响到网络连接状态的硬件问题
如果未通过系统状态检查,我们会微增 StatusCheckFailed_System 指标。
裸机实例
如果在裸机实例上从操作系统重新启动,系统状态检查可能会暂时返回失败状态。当实例变为可用时,系统状态检查应返回通过状态。
实例状态检查
实例状态检查 监控各个实例的软件和网络配置。Amazon EC2 通过向网络接口 (NIC) 发送地址解析协议 (ARP) 请求,检查实例的运行状况。这些检查检测需要您参与修复的问题。如果实例状态检查失败,通常必须由您自行解决问题(例如,重启实例或更改实例配置)。
以下是可能导致实例状态检查失败的问题的示例:
-
系统状态检查故障
-
网络或启动配置不正确
-
内存耗尽
-
文件系统损坏
-
内核不兼容
如果未通过实例状态检查,我们会微增 StatusCheckFailed_Instance 指标。
裸机实例
如果在裸机实例上从操作系统重新启动,实例状态检查可能会暂时返回失败状态。当实例变为可用时,实例状态检查应返回通过状态。
查看状态检查
您可以使用 Amazon EC2 控制台或 Amazon CLI 来查看和使用状态检查。
使用控制台查看状态
要使用 Amazon EC2 控制台查看状态检查,请执行以下步骤。
查看状态检查(控制台)
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
实例页面上的状态检查列中会列出每个实例的运行状态。
-
要查看特定实例的状态,请选择该实例,然后选择 Status Checks(状态检查)选项卡。
如果实例状态检查失败,通常必须由您自行解决问题(例如,通过重启实例或更改实例配置)。要自行解决系统或实例状态检查失败问题,请参阅 通过故障状态检查来排查实例问题。
-
要查看状态检查的 CloudWatch 指标,选择实例,然后选择 Monitoring (监控) 选项卡。滚动,直到您看到以下指标的图表:
-
状态检查失败(任意)
-
状态检查失败(实例)
-
状态检查失败(系统)
有关更多信息,请参阅状态检查指标。
-
使用命令行查看状态
您可以使用 describe-instance-status (Amazon CLI) 命令查看正在运行的实例的状态检查。
要查看所有实例的状态,请使用以下命令。
aws ec2 describe-instance-status
要获取实例状态为 impaired
的所有实例的状态,请使用以下命令。
aws ec2 describe-instance-status \ --filters Name=instance-status.status,Values=impaired
要获取单一实例的状态,请使用以下命令。
aws ec2 describe-instance-status \ --instance-ids
i-1234567890abcdef0
或者,使用以下 命令:
-
Get-EC2InstanceStatus (Amazon Tools for Windows PowerShell)
-
DescribeInstanceStatus(Amazon EC2 查询 API)
如果您的实例发生了状态检查故障,请参阅 通过故障状态检查来排查实例问题。
报告实例状态
如果您的实例出现了问题但其状态并未显示为受损,或者如果您想要向 Amazon 发送有关您遇到的受损实例问题的更多详细信息,您可提供反馈。
我们利用报告的反馈来识别影响到多数客户的问题,但不会对单独的账户问题做出回应。提供反馈并不会改变您当前看到的实例状态检查结果。
使用控制台报告状态反馈
报告实例状态(控制台)
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
选择实例,选择状态检查选项卡,选择操作(页面下半部分中的第二个操作菜单),然后选择报告实例状态。
-
填写报告实例状态表单,然后选择提交。
使用命令行报告状态反馈
可以使用 report-instance-status (Amazon CLI) 命令发送有关受损实例状态的反馈。
aws ec2 report-instance-status \ --instances
i-1234567890abcdef0
\ --status impaired \ --reason-codescode
或者,使用以下 命令:
-
Send-EC2InstanceStatus (Amazon Tools for Windows PowerShell)
-
ReportInstanceStatus(Amazon EC2 查询 API)
创建和编辑状态检查警报
您可以使用状态检查指标创建 CloudWatch 警报,以在实例的状态检查失败时向您发送通知。
使用控制台创建状态检查警报
使用以下过程配置一个警报,当实例的状态检查失败时,该警报将通过电子邮件向您发送通知,或者停止、终止或恢复实例。
创建状态检查警报(控制台)
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
选择实例,选择状态检查选项卡,然后依次选择操作、创建状态检查警报。
-
在 Manage CloudWatch alarms(管理 CloudWatch 警报)页面的 Add or edit alarm(添加或编辑警报)下,选择 Create an alarm(创建警报)。
-
对于警报通知,打开开关以配置 Amazon Simple Notification Service (Amazon SNS) 通知。选择现有 Amazon SNS 主题或输入名称来创建新主题。
如果您向收件人列表添加了电子邮件地址或创建了新的主题,则 Amazon SNS 将向每个新地址发送一封订阅确认电子邮件。每个收件人必须通过选择该邮件中包含的链接来确认订阅。警报通知仅发送至经过确认的地址。
-
对于警报操作,打开开关以指定触发警报时要执行的操作。选择操作。
-
对于警报阈值,请指定警报的指标和条件。
您可以保留 Group samples by(样本分组方式)和 Type of data to sample(要采样的数据类型)的原定设置 [Average(平均值)和 Status check failed:either(状态检查失败:任一)],也可以根据自己的需求进行更改。
在 Consecutive period(连续周期)中,设置要评估的周期数,然后在 Period(时间段)中输入评估时间段的持续时间,此评估时间段结束后才会触发警报并发送电子邮件。
-
(可选)对于样本指标数据,选择添加到控制面板。
-
选择 Create(创建)。
在您需要更改实例状态警报时,您可以对其进行编辑。
使用控制台编辑状态检查警报
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
选择所需实例,然后依次选择操作、监控、管理 CloudWatch 警报。
-
在 Manage CloudWatch alarms(管理 CloudWatch 警报)页面的 Add or edit alarm(添加或编辑警报)下,选择 Edit an alarm(编辑警报)。
-
对于 Search for alarm(搜索警报),选择警报。
-
完成更改后,选择 Update(更新)。
使用 Amazon CLI 创建状态检查警报
在以下示例中,当实例的实例检查或系统状态检查在至少两个期间连续失败后,警报将向 SNS 主题 arn:aws:sns:us-west-2:111122223333:my-sns-topic
发送通知。使用的 CloudWatch 指标为 StatusCheckFailed
。
使用 Amazon CLI 创建状态检查警报
-
选择一个现有 SNS 主题或创建一个新的主题。有关更多信息,请参阅 Amazon Command Line Interface 用户指南中的在您的 Amazon SNS 中使用 Amazon CLI。
-
使用以下 list-metrics 命令查看 Amazon EC2 的可用 Amazon CloudWatch 指标。
aws cloudwatch list-metrics --namespace AWS/EC2
-
使用以下 put-metric-alarm 命令创建警报。
aws cloudwatch put-metric-alarm --alarm-name
StatusCheckFailed-Alarm-for-i-1234567890abcdef0
--metric-name StatusCheckFailed --namespace AWS/EC2 --statistic Maximum --dimensions Name=InstanceId,Value=i-1234567890abcdef0
--unit Count --period 300 --evaluation-periods 2 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --alarm-actionsarn:aws:sns:us-west-2:111122223333:my-sns-topic
周期为收集 Amazon CloudWatch 指标所需的时间范围(以秒为单位)。此示例使用 300,这是 60 秒乘以 5 分钟得到的结果。评估期是必须将指标数值与阈值相比较的连续周期数。此示例使用 2。警报操作是要在此警报触发时执行的操作。此示例将此警报配置为使用 Amazon SNS 发送电子邮件。