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

Memory Utilization for auto scaling group AWS

我正在设置 AWS 自动缩放,并且在设置缩放策略时我 运行 遇到了这个问题。

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

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

当我将它用于简单实例时,它工作正常。但是当我按照上面文档中的建议使用下面的命令进行 autosacling 时,它会给出错误

命令

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

错误:

WARNING: The Auto Scaling metrics will not be reported this time.

当我在互联网上检查这个错误时,很少有人说它可能是 /var/tmp/aws-mon 中的 instance-id 错误,我检查过这不是问题。

感谢任何帮助。

Here 是 link AWS 支持同样的问题。

Here 是 link 到 Perl 脚本的源代码。我不确定它是否可以在这里发布,所以打开 ZIP 文件转到 mon-put-instance-data.pl,然后搜索 reported。从那到ifs,如果您没有提供verify,也没有提供自动缩放组名称,似乎会发生错误。由于第一个仅用于测试 - 我们有赢家。请提供自动缩放组名称参数...

好吧,没有那个参数,但是如果你仔细观察,你会发现 find 中 reported 之前的一些行,有针对那个的查询。所以...您的实例无权访问。

CloudWatchClient::get_auto_scaling_group 谷歌搜索得到这个 result。从那里您可以了解到您应该授予您的实例将数据发布到 CloudWatch 的权限...

如果您还有其他问题,请- 问。我会编辑这个答案,所以我们或多或少会有一些完整的东西——不仅仅是为了我。

好吧,我在这种情况下做了最愚蠢的事情,我将此作为答案发布,以便它可以帮助其他人。 我正在测试不属于任何自动缩放组的实例。

如果您的实例属于 Autoscaling 组,则工作解决方案。

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

然后运行,

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

当监控脚本 运行s 缓存 instance_id 在 /var/tmp/aws-mon 下。
它在获取自动缩放组名称时使用的过滤器之一是实例编号。此 TTL 为 6 小时,因此如果您的 AMI 具有此缓存,则查询将在创建实例后长达 6 小时内使用错误的实例 ID,这将导致它无法检索自动缩放组名称。

REF:https://forums.aws.amazon.com/thread.jspa?threadID=117783

我面临着同样的挑战,但这个问题的正确答案是,您可能错过了以下提到的先决条件:

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

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

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

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

一旦你 运行 这个命令你的脚本应该 运行 没有任何错误。

希望对您有所帮助。 :)