AWS Beantalk监控指标在部署期间消失

时间:2020-08-04 00:05:22

标签: amazon-web-services amazon-elastic-beanstalk amazon-cloudwatch aws-auto-scaling

我们已经使用Web和worker类(多个集群)为AWS Beanstalk设置了一个不变的配置。部署新应用程序时,它将创建一个临时自动伸缩组,然后将其部署到该应用程序,最后切换回旧的自动伸缩组。此过程大约需要20-30分钟,并且效果很好。

尽管如此,每次我们部署应用程序时,监视状态:CPU利用率,内存利用率,磁盘空间等,在返回之前,它们都会消失5-6小时。似乎是一个AWS问题,但不确定我们是否做错了什么。还有其他人遇到过这种行为吗?有解决方法吗?

编辑: 这是缺少内存指标的屏幕截图,您可以看到在5.30pm和11.30pm之间没有数据。 enter image description here

2 个答案:

答案 0 :(得分:0)

我尝试通过选中CPUUtilization,使用负载均衡的EB环境对一个实例进行复制问题。

在不变部署之后,我观察到很小的差距(10分钟)。距离5-6小时还很远。

观察到的延迟仅在EB控制台中。相应的CloudWatch(CW)指标没有没有延迟。这样,我可以在CW中监视CPUUtilization,同时等待EB控制台赶上。

对于我的测试,我执行了两个不可变的部署。在CW中,指标与部署创建的新实例完全吻合(没有任何间隙):

enter image description here

实例的指标在CW中也应该可行。因此,在EB控制台赶上时,您应该可以在那里查看它们。

要获取所有单个指标的统一视图,可以使用metric math

AVG(METRICS())

enter image description here

答案 1 :(得分:0)

对于以后发现此问题的任何人-我都知道了问题。我使用的脚本由Cloudwatch提供,该脚本在内部将自动扩展组名缓存6小时。通常,这不会成为问题,因为这些值不会定期更改。但是由于部署是不可变的,因此在部署期间会创建一个临时的自动扩展组,该组会缓存6小时。

要解决此问题,我在CloudWatchClient代码中替换了以下行:

$meta_data_short_ttl = 21600; # 6 hours

具有:

meta_data_short_ttl = 600; # 10 mins

如果您使用的是this script,也可以通过对现有代码进行.ebextension更改来完成:

04-reduce-cache:
    command: sed -i 's/meta_data_short_ttl = 21600; # 6 hours/meta_data_short_ttl = 600; # 10 mins/g' /opt/cloudwatch/aws-scripts-mon/CloudWatchClient.pm