AWS Cloudwatch自动伸缩组中每个实例的告警

5

我们在AWS中配置了一个Auto Scaling组,并且它运行良好。我们为该组配置了一些警报,例如:如果平均CPU利用率 > 60持续2分钟,则发送警报...使用AWS CLI。

唯一的问题是,如果我们想监视组中的每个实例,我们必须手动配置它们。有没有自动配置的方法,例如配置模板?


您需要为每个实例单独设置警报的使用场景是什么? - John Rotenstein
2个回答

7

Amazon CloudWatch警报可以在整个自动扩展组上创建,例如Average CPUUtilization。这是因为警报用于告诉自动扩展何时添加/删除实例,而这些决策将基于整个组。例如,如果一个机器占用100%,但另一个机器占用0%,那么平均而言,该组仅占用50%。

在自动扩展组中,没有理由在单个实例上放置警报,至少不会触发扩展操作。

没有内置功能来指定将应用于每个自动缩放实例的警报。您可以通过响应Amazon SNS通知以编程方式执行此操作,每当Auto Scaling添加/删除实例时,但这将需要编写您自己的代码。


3
谢谢您的回答。就像您的例子一样,我们有两个实例,一个是100%繁忙,另一个是0%繁忙。我们的负载均衡器正在使用轮询算法,大约50%的流量仍将指向负载较重的实例1。因此,我们想要避免这种情况,在每个实例上设置一些警报。 - shan
你的请求是否消耗了大量的CPU资源或长时间?如果是这样,那么你最好通过SQS排队请求进行后端处理,而不是让终端用户等待很长时间。如果你的请求相对较短(例如最多5-10秒),它们将在服务器之间平均分配。 - John Rotenstein
1
这正是我想要了解的内容。如果我有一个存在问题的主机(例如,CPU 高负载),即使平均值正常,我也想收到警报。 - fredy

1
你可以使用生命周期钩子和一些lambda粘合剂来完成这个操作。当您有添加或终止实例的生命周期事件时,您可以通过lambda函数在该单个实例上创建警报或删除它(取决于事件)。
对于John的观点,这有点违反了水平扩展和负载均衡的模式。不过,理论和实践有时会分道扬镳。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接