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

AWS beanstalk monitoring metrics disappear during deploy

我们已经使用 web 和 worker 类(多个集群)为 AWS beanstalk 设置了一个不可变的配置。当我们部署一个新的应用程序时,它会创建一个临时的自动缩放组,然后部署到该组,最后切换回旧的自动缩放组。此过程大约需要 20-30 分钟并且工作正常。

虽然,每次我们部署应用程序时,监控统计信息:CPU 利用率、内存利用率、磁盘 space 等等,在返回之前都会消失 5-6 小时。似乎是 AWS 问题,但不确定我们是否做错了什么。有没有其他人经历过这种行为?有解决方法吗?

编辑: 这是缺少内存指标的屏幕截图,您可以看到在下午 5 点 30 分到晚上 11 点 30 分之间没有数据。

我尝试通过检查 CPUUtilization.

在一个实例中使用 load-balanced EB 环境来 复制 问题

我在不可变部署后观察到小间隙(10 分钟)。这远不是 5-6 小时。

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

对于我的测试,我执行了两个不可变部署。在 CW 中,部署创建的新实例的指标很好地对齐(没有任何差距):

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

要获得所有单独指标的统一视图,可以使用metric math:

AVG(METRICS())

对于以后发现此问题的任何人 - 我已经解决了这个问题。我使用的脚本由 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