自动伸缩组AWS的内存利用率

13

我正在设置 AWS 自动伸缩,但在设置伸缩策略时遇到了问题。

我想使用内存作为参数,所以我从下面的链接安装了 Cloudwatch 的内存监控脚本。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html

当我用它来监视简单实例时,它运行得很好。但是,当我按照上述文档中建议的方法对自动伸缩进行操作时,就会出现以下命令的错误:

命令

./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --auto-scaling=only

错误信息:

警告:此次不会报告自动伸缩指标。

当我在互联网上查找此错误时,有些人说这可能是 /var/tmp/aws-mon 中实例 ID 的错误,但我检查后发现并非如此。

如果有任何帮助,将不胜感激。


这可能非常有用:https://medium.com/@lvthillo/aws-auto-scaling-based-on-memory-utilization-in-cloudformation-159676b6f4d6 - lvthillo
4个回答

7

如果您的实例属于自动缩放组,以下是有效的解决方案。

rm -rf /var/tmp/aws-mon/

接着运行以下命令:

./mon-put-instance-data.pl --mem-util --auto-scaling=only

当监控脚本运行时,它会将instance_id缓存在/var/tmp/aws-mon下。获取自动扩展组名称时,其中一个过滤器使用的是实例id。这个缓存的TTL为6小时,因此如果您的AMI具有此缓存,则查询将在实例创建后的6小时内使用错误的实例id,导致无法检索到自动扩展组名称。
参考:https://forums.aws.amazon.com/thread.jspa?threadID=117783

6

这里是有同样问题的AWS支持链接。

这里是Perl脚本的源代码链接。我不确定在这里是否可以发布它,所以打开ZIP文件,进入mon-put-instance-data.pl,并搜索reported。从那里到ifs,看起来如果未提供verify和自动扩展组名称,则会出现错误。因为第一个只用于测试 - 我们赢了。请提供自动缩放组名称参数...

好吧,没有那个参数,但是如果你仔细看,在reported之前的某些行中,有查询该参数的语句。所以...你的实例无法访问。

使用CloudWatchClient :: get_auto_scaling_group 进行谷歌搜索,得到这个结果。从那里,您可以阅读到应授予您的实例权限将数据发布到CloudWatch...

如果您有其他问题,请随时提问。我会编辑这个答案,这样我们就会有更加完整的内容,不仅仅是为了我。


感谢您的努力,我找到了原因并将其更新为答案。 - amit singh

4

在这种情况下,我做了最愚蠢的事情,我把这个作为答案发布出来,以便帮助其他人。 我正在测试不属于任何自动扩展组的实例。


0

我曾经面临同样的挑战,但是这个问题的正确答案是,你可能错过了先决条件,这些先决条件在以下位置提到:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html#mon-scripts- perl_prereq

这个编译错误实际上表明缺少一些包,这些包是运行perl脚本所必需的。

如果您正在使用EC2 Linux实例来运行这些脚本,则可能错过了以下命令:

sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64

一旦您运行此命令,您的脚本应该可以正常运行,没有任何错误。

希望这有所帮助。:)


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