我有一个在AWS上运行的应用程序。如何设置Amazon CloudWatch以在EC2实例失败或不再响应时通知我?如何设置CloudWatch以检测EC2实例何时停止?
我经历了CloudWatch屏幕,看起来您可以监视某些统计信息,如CPU或磁盘利用率,但我没有看到监视事件的方式,例如“该实例获取了http请求,比X秒来回应。“
我有一个在AWS上运行的应用程序。如何设置Amazon CloudWatch以在EC2实例失败或不再响应时通知我?如何设置CloudWatch以检测EC2实例何时停止?
我经历了CloudWatch屏幕,看起来您可以监视某些统计信息,如CPU或磁盘利用率,但我没有看到监视事件的方式,例如“该实例获取了http请求,比X秒来回应。“
CloudWatch监控就像您发现的一样。您可以通过查看指标来推断您的某个实例已被冻结,但CloudWatch不会例如例如,当您的应用停机或运行速度过慢时,会向您发送电子邮件。
如果您在应用程序或实例关闭时正在寻找某种通知,我建议您使用监控服务。 Pingdom是一个不错的选择。您也可以在AWS上设置新实例,并安装一个监控工具,如Nagios,这将是我的首选选项。
在漫长的道路上总是值得的良好实践:使用负载平衡(Amazon ELB),运行应用程序的多个实例,自动缩放(当实例关闭时,Amazon会自动启动一个新实例并维护您的SLA )和自定义监控。
我的团队已经使用了很长时间的自定义监控脚本,并且一旦发生故障,我们就始终知道故障。基本上,如果我们有两个节点运行我们的应用程序,那么节点1向节点2和节点2发送HTTP请求到1.如果任何请求花费比预期的多,或者返回了意外的HTTP状态或响应正文,脚本会发送一封电子邮件给系统管理员。现在,我们依靠更强大的方法,如Nagios,它甚至可以监视操作系统的东西(线程等),应用程序服务器(连接池健康等)等等。值得投入每一分钱来设置它。
您可以随时为工具/测试提供另一个实例,该实例将根据计划尝试http请求并测量响应时间,然后您可以使用CloudWatch发布该响应时间,并在其结束时设置警报一定的阈值。
你甚至可以从实例本身做到这一点。
CloudWatch最近添加了“状态检查”度量标准,可以回答您关于某个实例是否已关闭的问题之一。它不会向您的Web服务器发出请求,而是进行系统检查。如前面的回答所示,使用ELB进行HTTP健康检查。
要监控CloudWatch中的事件,请创建一个警报,该警报会根据给定阈值监控度量标准。
创建警报时,您可以添加用于发送通知的“操作”。 AWS通过SNS(简单通知服务)处理通知。您可以订阅通知主题,然后您会收到一封电子邮件给您。
对于EC2指标,例如CPU或磁盘利用率,这是从AWS文档中的指南:http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/US_AlarmAtThresholdEC2.html
如已经回答,使用ELB监视HTTP。
为了回答您的具体问题,监控X秒为HTTP响应,你需要建立一个报警监视ELB“延迟”。
正如上面提到的Kurst Ursan,使用“状态检查”度量标准是一种可行的方法。在某些情况下,您将无法浏览该指标(即,如果您;正在使用AWS OpsWorks),那么您将不得不自行报告该自定义指标。但是,您可以设置一个基于始终匹配的度量标准(处于OK状态)的警报,并在状态更改为“INSUFFICIENT DATA”状态时发出警报触发,这在技术上意味着CloudWatch无法确定状态是否正常或ALARM,因为它无法到达您的实例,AKA您的实例处于脱机状态。
亚马逊的Route 53健康检查是该工作的正确工具。
Route 53可以监视应用程序以及Web服务器和其他资源的运行状况和性能。
您可以在Route 53中设置HTTP资源检查,以便在服务器关闭或发生错误时作出响应时触发电子邮件通知。
http://eladnava.com/monitoring-http-health-email-alerts-aws/
感谢史蒂芬,我不知道你能做到这一点(甚至没有域号公路上53)。每月进行50次健康检查,这比pingdom便宜很多,如果只有一两个EC2实例,就可以运行自己的EC2实例。 – spidie 2015-06-04 09:35:42