Auto Scaling 组 AWS 的内存利用率
Posted
技术标签:
【中文标题】Auto Scaling 组 AWS 的内存利用率【英文标题】:Memory Utilization for auto scaling group AWS 【发布时间】:2018-04-16 03:11:31 【问题描述】:我正在设置 AWS 自动缩放,在设置缩放策略时遇到了这个问题。
我想使用内存作为参数,所以我从下面的链接安装了 CLoudwatch 的内存监控脚本。
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
错误:
警告:这次不会报告 Auto Scaling 指标。
当我在互联网上检查此错误时,很少有人说这可能是 /var/tmp/aws-mon 中的实例 ID 错误,我检查过这不是问题。
感谢任何帮助。
【问题讨论】:
这可能非常有用:medium.com/@lvthillo/… 【参考方案1】:Here 链接到具有相同问题的 AWS 支持。
Here 是指向 Perl 脚本源代码的链接。我不确定它是否可以在这里发布,所以打开 ZIP 文件转到mon-put-instance-data.pl
,然后搜索reported
。从那到 ifs 如果您没有提供 verify
或自动缩放组名称,则会出现错误。由于第一个仅用于测试-我们有赢家。请提供自动伸缩组名参数...
好吧,没有那个参数,但是如果你仔细观察,你会发现 reported
之前的一些行来自 find,有查询。所以...您的实例无权访问。
使用CloudWatchClient::get_auto_scaling_group
搜索会得到result。从那里您可以了解到您应该授予您的实例将数据发布到 CloudWatch 的权限...
如果您还有其他问题,请 - 问。我会编辑这个答案,所以我们或多或少会有一些完整的东西——不仅对我来说。
【讨论】:
感谢您的努力,我找到了原因并更新为答案。【参考方案2】:好吧,在这种情况下,我做了最愚蠢的事情,我将其发布为答案,以便对其他人有所帮助。 我正在测试不属于任何 Auto Scaling 组的实例。
【讨论】:
【参考方案3】:如果您的实例属于 Autoscaling 组,则工作解决方案。
rm -rf /var/tmp/aws-mon/
然后运行,
./mon-put-instance-data.pl --mem-util --auto-scaling=only
当监控脚本运行时,它会将 instance_id 缓存在/var/tmp/aws-mon
下。 它在获取 Auto Scaling 组名称时使用的过滤器之一是实例 ID。其 TTL 为 6 小时,因此如果您的 AMI 具有此缓存,则查询将在创建实例后长达 6 小时内使用错误的实例 ID,从而导致无法检索 Auto Scaling 组名称。
参考号:https://forums.aws.amazon.com/thread.jspa?threadID=117783
【讨论】:
【参考方案4】:我也面临同样的挑战,但这个问题的正确答案是,您可能错过了以下提到的先决条件:
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
运行此命令后,您的脚本应该可以正常运行而不会出现任何错误。
希望对您有所帮助。 :)
【讨论】:
以上是关于Auto Scaling 组 AWS 的内存利用率的主要内容,如果未能解决你的问题,请参考以下文章
在某些情况下,AWS ELB 不会将请求分发到 Auto Scaling 组 EC2 实例
为啥 AWS Auto Scaling 在扩展期间会启动多个实例?
AWS - 错误 - 更新 Auto Scaling 组、Amazon CloudFormation、无法部署配置