关于 Amazon CloudWatch:Amazon CloudWatch – 发出警报时重复操作

Amazon CloudWatch - repeat action when alarm is raised

我正在使用 Amazon CloudWatch 服务来管理一组 EC2 实例。更准确地说,当警报从 OK 状态更改为 ALARM 状态时,我会执行 AutoScaling 操作。

考虑以下示例:当 SQS 队列长度连续 5 分钟小于 1 时,有一个缩减操作会终止一个实例。假设有 5 个实例在运行,然后发出警报,我们有 4 个正在运行的实例。但!我希望 CloudWatch 在我处于警报状态时继续执行我的操作!我想要 3 个,然后是 2 个,然后只有一个实例,当我没有什么要处理的时候。

我尝试了另一种方法:在自动缩放操作后立即将警报状态重置为 INSUFFICIENT_DATA。这样我可以有效地将我的池缩小到一个实例,但随后整个系统陷入"无限循环":我将状态更改为 INSUFFICIENT_DATA,然后亚马逊立即再次发出警报,然后我更改状态等等。

所以,我想要:亚马逊在有警报状态时重复我的警报操作,或者有一些警报冷却时间,以防止亚马逊在状态改变后立即启动它。

请帮我找到解决问题的正确方法。


触发警报时,自动缩放将根据您的自动缩放策略进行缩放。但是,它也会锁定自动缩放组,以便在该时间范围内不会接受任何其他缩放请求。

一旦资源被配置/取消配置,自动扩展冷却时间就会开始,在此期间它不会处理任何其他 cloudwatch 触发器。一旦冷却期结束,它就准备好接受来自 Cloudwatch 警报的任何新扩展请求。

这里详细解释了整个过程。

所以....

您本质上想要的是让自动缩放功能不间断地响应 cloudwatch 警报。换句话说,您不希望冷却时间或您希望冷却时间为零。默认冷却时间为 300 秒。您可以配置具有零冷却时间的自动扩展策略,以便将实例数从 5 减少到 4 到 3 到 2 到 1 ...等,前提是警报在该时间段内保持活动状态。

点击此处查看可以配置冷却时间的命令。

将冷却时间调为零有什么影响?好吧,我不知道,但从技术上/理论上讲,这正是您所期待的。