某公司在 Amazon EC2 实例上运行多个生产工作负载。管理员发现个生产 EC2 实例未能通过系统运行状况检查。管理员手动恢复了该实例。管理员希望只要系统运行状况检查失败,就会自动完成 EC2 实例的恢复任务并且会收到通知。公司的所有生产 EC2 实例都激活了详细监控。
以下哪项是能够满足这些要求的最具运营效率的解决方案?
A. 对于每个生产 EC2 实例,针对“状态检查失败:系统”创建 Amazon CloudWatch 警报。将警报操作设置为恢复 EC2 实例。配置发布到 Amazon Simple Notification Service (Amazon SNS) 主题的警报通知。
B. 在每个生产 EC2 实例上创建一个脚本,通过每分钟将心跳通知发布到中央监控服务器来监控系统运行状况。如果某个 EC2 实例未能发送心跳信号,则在监控服务器上运行脚本来停止并启动该 EC2 实例,并将通知发布到 Amazon Simple Notification Service (Amazon SNS) 主题。
C. 在每个生产 EC2 实例上,创建一个脚本,通过 cron 作业将网络 ping 发送到高度可用的终端节点上。如果该脚本检测到网络响应超时,则调用一个命令来重启 EC2 实例。
D. 在每个生产 EC2 实例上,配置 Amazon CloudWatch 代理来收集日志并将其发送到 Amazon CloudWatch Logs 中的日志组。创建一个基于跟踪错误的指标筛选条件的 CloudWatch 警报。配置警报来调用 AWS Lambda 函数,以重启 EC2 实例并发送通知电子邮件。
A
技巧:排除明显错误选项,在没有明显错误的选项中选择最合理的选项。
在这个问题中,我们需要找到一个解决方案,该方案能够在 Amazon EC2 实例的系统运行状况检查失败时自动恢复实例,并向 SysOps 管理员发送通知。同时,考虑到所有生产 EC2 实例都启用了详细监控,我们可以利用 AWS 提供的原生服务和功能来实现这一需求。
A. 正确。该方案直接利用了 AWS 的 CloudWatch 和 SNS 服务。CloudWatch 可以监控 EC2 实例的状态检查,并在检测到失败时触发警报。警报可以配置为自动执行恢复操作(如重启实例),并通过 SNS 发送通知。这是一个高效且直接利用 AWS 原生服务的方法。Amazon CloudWatch 警报操作来创建自动停止、终止、重启或恢复 Amazon EC2 实例的警报。假如某个实例由于物理主机上的硬件或软件问题、网络连接丢失或系统停电而受损,CloudWatch 警报 可以自动启动恢复操作以将实例迁移到新硬件,同时还可以配置发布到 Amazon Simple Notification Service (Amazon SNS) 主题的消息,以接收相关事件的通知。
B. 不正确。不恰当的选项。该方案需要额外的脚本和中央监控服务器,增加了系统的复杂性和维护成本。此外,手动停止和启动实例可能导致数据丢失或服务中断,不如 CloudWatch 的自动恢复功能可靠。
C. 不正确。不恰当的选项。该同样依赖于自定义脚本和 cron 作业,缺乏 AWS 原生服务的可靠性和集成性。此外,仅通过 ping 来判断实例状态可能不够准确,因为网络问题不一定意味着实例本身有问题。
D. 不正确。不合理的选项。该方案依赖于日志分析来触发警报,而不是直接监控系统状态检查。这可能导致警报延迟或错过一些状态检查失败的情况。而且发送电子邮件通知不如使用 SNS 服务准确可靠。