我如何平整我的自动缩放检查?

所以,我一直在玩我的自动缩放configuration和我的Cloudwatch警报,试图保持所有的实例呜呜,但不咆哮。

我似乎无法摆脱一个恒定的溜溜球。 CPU使用率上升,引入一个实例,CPU使用率下降,杀死一个实例。 冲洗并重复。

在这里输入图像说明

目前,我正在以平均CPU> = 40%的3 x 1分钟间隔进行报警。 也许我可以基于其他东西? CPU是一个棘手的一个,因为当这个图表尖峰(高),我可以看到一些实例与空闲的CPU,所以平均正在提出一个单一的实例。

我发现有些人在得到200的时候会得到502。 显然,我希望这是一致的,并停止这一次的尖峰。

提前致谢。

编辑1:我已经调整了Cloudwatch指标为20%的CPU超过2分钟,还发现一个nginx错误,也可能归因于一些额外的负载。 当前graphics如下所示。

在这里输入图像说明

编辑2:负载监控是好多了。 请参阅下面的负载警报。 我收到警报的频率很低,一切都运行得更好。

这就是我每分钟都在运行的东西。

/usr/local/bin/aws cloudwatch put-metric-data --namespace="NS" --metric-name="GroupLoad" --value `cat /proc/loadavg | awk '{print $1}'` --dimensions AutoScalingWebGroup=NS-WebGroup 

在这里输入图像说明

基于CPU的AutoScaling而不是尝试服务器负载

AWS AutoScaling可以在任何CloudWatch指标上运行,您可以编写自己的自定义CloudWatch指标。

有关AutoScaling如何工作的更多信息: http : //docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html

创build一个自定义指标

http://aws.amazon.com/blogs/aws/amazon-cloudwatch-user-defined-metrics/

CloudWatch指标在名称空间范围内,最多可以进一步限定10个维度。 例如,可以跟踪一对应用程序(“App1”和“App2”)的延迟,同时保持相互隔离的值:

 $ mon-put-data -namespace App1 -metric-name Latency -value 104 $ mon-put-data -namespace App2 -metric-name Latency -value 120