如何设置CloudWatch以检测EC2实例何时关闭?

时间:2012-02-17 22:24:33

标签: amazon-web-services amazon-cloudwatch

我在AWS上运行了一个应用。当EC2实例失败或不再响应时,如何设置Amazon CloudWatch通知我?

我浏览了CloudWatch屏幕,看起来您可以监控某些统计信息,例如CPU或磁盘利用率,但我没有看到监控事件的方法,例如“实例获得了http请求并占用了超过X秒响应。“

7 个答案:

答案 0 :(得分:13)

要监控CloudWatch中的事件,您需要创建一个警报,它会根据给定的阈值监控指标。

创建闹钟时,您可以添加“动作”以发送通知。 AWS通过SNS(简单通知服务)处理通知。您可以订阅通知主题,然后您将收到一封警报电子邮件。

对于CPU或磁盘利用率等EC2指标,这是AWS文档的指南:http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/US_AlarmAtThresholdEC2.html

如前所述,使用ELB监控HTTP。

这是ELB的可用指标列表: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_MonitoringLoadBalancerWithCW.html#available_metrics

要回答您的具体问题,要监控http响应的X秒,您需要设置一个警报来监控ELB“延迟”。

答案 1 :(得分:12)

亚马逊的Route 53 Health Check是适合这项工作的正确工具。

  

Route 53可以监控应用程序以及Web服务器和其他资源的运行状况和性能。

您可以在Route 53中设置HTTP资源检查,如果服务器关闭或响应错误,将触发电子邮件通知。

http://eladnava.com/monitoring-http-health-email-alerts-aws/

答案 2 :(得分:8)

CloudWatch监控就像您发现的一样。您可以通过查看指标来推断您的某个实例已被冻结,但CloudWatch不会例如例如,当您的应用程序停机或太慢时,会向您发送电子邮件。

如果您在应用或实例关闭时寻找某种通知,我建议您使用监控服务。 Pingdom是个不错的选择。您还可以在AWS上设置新实例并安装监控工具,例如Nagios,这将是我的首选选项。

在漫长的道路上总是值得的良好做法:使用负载平衡(Amazon ELB),运行应用程序的多个实例,自动扩展(当实例关闭时,亚马逊将自动启动新的实例和维护您的SLA)和自定义监控。

我的团队已经使用了自定义监控脚本很长一段时间,我们一旦发生故障就会立即知道故障。基本上,如果我们有两个节点运行我们的应用程序,节点1将HTTP请求发送到节点2,节点2发送到1.如果任何请求超过预期,或返回意外的HTTP状态或响应正文,脚本会向系统管理员。如今,我们依赖于更强大的方法,如Nagios,它甚至可以监视操作系统的东西(线程等),应用程序服务器(连接池的健康状况等)等等。投入设置它的每一分钱都值得。

答案 3 :(得分:2)

您可以随时拥有工具/测试的另一个实例,该实例将根据计划尝试http请求并测量响应时间,然后您可以使用CloudWatch发布响应时间并在超过某个时间时设置警报阈值。

你甚至可以从实例本身那样做。

答案 4 :(得分:1)

正如上面提到的Kurst Ursan所说,使用“状态检查”指标是可行的方法。在某些情况下,您将无法浏览该指标(即,如果您使用AWS OpsWorks),那么您将不得不自己报告该自定义指标。但是,您可以设置基于始终匹配的度量标准(在OK状态中)并在状态更改为“INSUFFICIENT DATA”状态时具有警报触发器的警报,这在技术上意味着CloudWatch无法判断状态是否正常或ALARM,因为它无法访问您的实例,AKA您的实例处于脱机状态。

答案 5 :(得分:0)

有很多方法可以获取实例运行状况信息。这是一对。

  1. 在EC2 API中观察实例状态检查和EC2事件(计划的停机时间)。您可以轮询这些并发送到Cloudwatch来创建警报。

  2. 在服务器上创建一个简单的守护程序,该守护程序每秒写入DynamoDB(粒度比Cloudwatch更好)。让第二个过程查询心跳并在丢失时发出警报。

  3. 将所有实例放在负载平衡器中,该负载平衡器的虚拟端口处于打开状态,并提供TCP响应。在ELB上设置TCP运行状况检查,并对不正常的实例发出警报。

除非您使用Blue Matador之类的产品(自动将生产问题通知您),否则设置这样的东西实际上是非常可恶的-更不用说对其进行维护了。就是说,如果您走上了道路,并希望获得一些使用Cloudwatch的帮助(术语,警报,日志等),请从以下博客开始:How to Monitor Amazon EC2 with CloudWatch

答案 6 :(得分:0)

任何EC2实例发生故障时,您都可以使用CloudWatch Event Rule进行监视。您可以从CloudWatch控制台创建事件规则,如下所示:

在CLoudWatch控制台中,选择“事件”->“规则”

对于事件模式,在服务名称中选择EC2 对于事件类型,选择“ EC2实例状态更改通知” 对于特定的州,请选择已停止

在目标中选择任何先前创建的SNS主题以发送通知!

来源:创建规则-https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatch-Events-Input-Transformer-Tutorial.html#input-transformer-create-rule

这并非完全是CloudWatch警报,但这用于监视/通知。