【问题标题】:How to restart an application, running on EC2 instance, when Cloudwatch alarm triggers?当 Cloudwatch 警报触发时,如何重新启动在 EC2 实例上运行的应用程序?
【发布时间】:2015-01-21 17:53:46
【问题描述】:

我当前的设置有 AWS Couldwatch 警报触发发送电子邮件通知,例如。 CPU 使用率在 n 分钟内低于 x%。这很容易通过 AWS 管理控制台进行设置。但是,在这种安排下,我需要远程登录到实例并手动重新启动失败的应用程序。我想使用相同的 Cloudwatch 警报事件自动执行此操作,而不是触发脚本运行(在与我的应用程序相同的 EC2 实例上),然后重新启动我的应用程序。如何做到这一点?

如果有一种方法可以从运行应用程序的实例中捕获 Cloudwatch 警报事件,那么这可能是一种简单的方法,但我不知道该怎么做。

这里发布了一个类似的问题 (How to restart EC2 instance from CloudWatch alarm)。然而,就我而言,我不认为 Auto Scaling 是一个可行的选择。因为实例上运行的其他一些软件的许可限制。

我正在运行基于 Windows 的 EC2 实例。

谢谢, 呸

【问题讨论】:

  • 是否更容易监控应用程序是否正在运行,如果没有则尝试按设定的时间间隔重新启动?这也将涵盖其他恢复场景,而不仅仅是与 cloudwatch 警报相关。
  • @Jason。这可能是一个选项,但我认为必然需要编写一个监视脚本,该脚本在设定的时间间隔内检查 CPU 使用情况并跟踪它是否低于设定的阈值 n 分钟(基本上是 Cloud Watch 执行的功能,如果有是一种简单地捕捉该事件的方法)。此外,如果说应用程序从未启动(例如,我正在对实例进行一些维护工作),我不想要触发事件。一切皆有可能,但希望有一个更简单的解决方案。谢谢
  • 基本上,要使用 Cloudwatch 执行自动化操作,您需要一个脚本/服务来监控 SQS 队列。这可能比直接监控服务更复杂。
  • @datasage。新的 Lambda 服务怎么样,或者这也可能是一条更复杂的路线?我在文档中看不到是否可以使用 Cloudfront 事件进行配置。
  • 据我了解,Lamba 是一种运行相对隔离的工作人员的服务。就像一个基于上传到 s3 的文件的图像转换系统。您的问题并不是它真正要解决的问题。

标签: events amazon-ec2 alarm amazon-cloudwatch


【解决方案1】:

AWS CloudWatch 警报可用于触发:

  • Auto Scaling 策略(例如在 Auto Scaling 组中添加/删除实例)
  • 停止/终止 EC2 实例
  • 通过 Amazon Simple Notification Service (SNS) 发送通知

然后,SNS 可以将通知以各种格式发送给订阅者:

  • 发送短信(仅限美国)
  • 将消息推送到 HTTP/S 端点(例如您编写的应用程序)
  • 将消息推送到 Amazon Simple Queue Service (SQS)
  • 向移动设备(例如 Android、iPhone)发送通知

根据您的场景,可以使用 HTTP 或 SQS 通知,但您必须编写一个程序来响应通知。但是,您只会使用代理来检测应用的运行状况(例如 CPU 利用率),而不是实际监控应用的运行状况。

您可以将自定义指标从应用程序发送到 CloudWatch,然后配置警报以根据此自定义指标触发。但是,如果您要解决所有这些问题,那么检测问题的代码可能应该直接修复它,而不是通过 CloudWatch。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    相关资源
    最近更新 更多