我有一个 t2.micro EC2 实例,以大约 2% 的 CPU 运行。我从其他帖子中知道 TOP 中显示的 CPU 使用率与 CloudWatch 中报告的 CPU 不同,并且应该信任 CloudWatch 值。
但是,我发现 TOP、CloudWatch 和 NewRelic 之间的内存使用值非常不同。
实例上有 1Gb 的 RAM,TOP 显示约 300Mb 的 Apache 进程,以及约 100Mb 的其他进程。 TOP 报告的总体内存使用量为 800Mb。我猜有 400Mb 的操作系统/系统开销?
但是,CloudWatch 报告了 700Mb 的使用量,而 NewRelic 报告了 200Mb 的使用量(尽管 NewRelic 报告了 300Mb 的其他地方的 Apache 进程,所以我忽略了它们)。
CloudWatch 内存指标通常超过 80%,我想知道实际值是多少,因此我知道必要时何时进行扩展,或者如何减少内存使用量。
这是最近的内存配置文件,随着时间的推移,似乎有些东西正在使用更多的内存(大幅下降是 Apache 重启,还是 GC?)
Screenshot of memory usage over last 12 days
最佳答案
AWS 不支持任何 EC2 实例的内存指标。由于亚马逊从 EC2 实例(服务器)外部进行所有监控,因此无法捕获实例内部的内存指标。但是,要完全监控实例,您必须需要任何实例的内存利用率统计信息,以及他的 CPU 利用率和网络 IO 操作。
但是,我们可以使用 cloudwatch 的自定义指标功能将任何应用程序级数据发送到 Cloudwatch 并使用亚马逊工具对其进行监控。
您可以关注此博客了解更多详情:http://upaang-saxena.strikingly.com/blog/adding-ec2-memory-metrics-to-aws-cloudwatch
您可以在该实例中设置 5 分钟间隔的 cron,所有数据点都可以在 Cloudwatch 中看到。
关于memory - EC2 CloudWatch 内存指标与 Top 显示的不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36296440/