19

I've got an app running on AWS. How do I set up Amazon CloudWatch to notify me when the EC2 instance fails or is no longer responsive?

I went through the CloudWatch screens, and it appears that you can monitor certain statistics, like CPU or disk utilization, but I didn't see a way to monitor an event like "the instance got an http request and took more than X seconds to respond."

4

8 回答 8

15

亚马逊的 Route 53 健康检查是适合这项工作的工具。

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

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

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

于 2014-04-17T19:13:58.163 回答
13

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

创建警报时,您可以添加用于发送通知的“操作”。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“延迟”。

于 2014-01-02T02:29:31.327 回答
8

CloudWatch 监控就像您发现的一样。通过查看指标,您将能够推断出您的一个实例已冻结,但 CloudWatch 不会在您的应用程序关闭或速度太慢等情况下向您发送电子邮件。

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

在漫长的道路上总是值得的良好实践:使用负载平衡 ( Amazon ELB )、运行您的应用程序的多个实例、自动缩放(当一个实例关闭时,Amazon 将自动启动一个新实例并维护您的 SLA),以及自定义监控。

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

于 2012-02-18T17:03:45.240 回答
5

CloudWatch 最近添加了“状态检查”指标,可以回答您关于实例是否已关闭的问题之一。它不会向您的 Web 服务器发出请求,而是进行系统检查。正如前面的回答所建议的,使用 ELB 进行 HTTP 健康检查。

于 2013-03-10T07:53:43.927 回答
2

You could always have another instance for tools/testing, that instance would try the http request based on a schedule and measure the response time, then you could publish that response time with CloudWatch and set an alarm when it goes over a certain threshold.

You could even do that from the instance itself.

于 2012-06-19T07:15:39.967 回答
1

正如上面提到的 Kurst Ursan,使用“状态检查”指标是要走的路。在某些情况下,您将无法浏览该指标(即,如果您正在使用 AWS OpsWorks),因此您必须自己报告该自定义指标。但是,您可以设置基于始终匹配(处于正常状态)的指标的警报,并在状态更改为“数据不足”状态时触发警报,这在技术上意味着 CloudWatch 无法判断状态是否正常或 ALARM 因为它无法访问您的实例,也就是您的实例处于脱机状态。

于 2014-01-18T05:50:52.207 回答
0

有很多方法可以获取实例健康信息。这里有一对。

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

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

  3. 将所有实例放在负载均衡器中,并打开一个提供 TCP 响应的虚拟端口。在 ELB 上设置 TCP 健康检查,并对不健康的实例发出警报。

除非您使用像 Blue Matador 这样的产品(自动通知您生产问题),否则设置这样的东西实际上是非常令人发指的 - 更不用说维护它了。就是说,如果您正在走下去,并且想要一些帮助以开始使用 Cloudwatch(术语、警报、日志等),请从这篇博客开始:如何使用 CloudWatch 监控 Amazon EC2

于 2019-07-09T23:20:08.590 回答
0

每当任何 EC2 实例出现故障时,您都可以使用 CloudWatch 事件规则进行监控。您可以从 CloudWatch 控制台创建事件规则,如下所示:

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

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

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

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

这不完全是 CloudWatch 警报,但它用于监控/通知的目的。

于 2020-02-13T14:01:25.623 回答