11 top amazon-web-services amazon-cloudwatch
top显示高峰时段的平均 CPU 使用率约为 20%,而 CloudWatch 监控显示平均 CPU 使用率为 40%。造成这种差异的原因是什么?
Chi*_*ida 16
一个很好的观察,我们也遇到了这个问题。这是我发现的:
小心测量 EC2 实例中的 CPU 使用率。可能会看到 CPU 使用率远低于 100%,但仍完全达到最大值。相信我:去过那里,做到了。(顺便说一下,CloudWatch CPUUtilization 是从实例外部测量的,并且始终是正确的。)
这里有一个很好的描述:https : //axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/
在上面的示例中,m1.small EC2 实例分配了 0.4 个处理器单元,因此 40% 的 CPU 繁忙意味着底层内核的使用百分比。但是,由于 40% 是可以分配给此 VM 的最大 CPU 份额,因此有效 CPU 使用率为 40%/40% = 100%。这是 CloudWatch 显示的数字。
如果你想知道 40% 来自哪里,数学很简单。m1.small linux 系统有权使用 1 个 EC2 计算单元,它提供与 1.0–1.2 GHz 2007 Opteron 或 2007 Xeon 处理器等效的 CPU 容量。由于 VM 在时钟速度为 2.6 GHz 的机器上运行,因此它有权在此特定 XEN 节点上获得 38.4% — 46.2% 的处理器份额。您可以运行 cat /proc/cpuinfo 命令来找出 EC2 实例背后的 CPU 架构。
特别注意关于如何处理不了解特殊数学的工具的提示:
另一个可用于改造未与 CloudWatch 集成的现有代理或基于 SNMP 的监控工具的选项是使用 CPU 空闲指标。您需要做的就是重新编写规则来衡量 CPU 空闲而不是 CPU 忙碌。例如,如果您为 CPU 繁忙定义了 >75% 的阈值,则为 CPU 空闲创建一个 <25% 规则。如果 CPU idle 为 0,则您的服务器受 CPU 限制。
很简单。非常好。
当您在 EC2 实例中运行 top 时,它正在测量运行您的实例和其他实例的物理核心机器的 CPU 使用率。如果您想单独测量实例的 cpu 使用情况(分配给您的实例的 EC2 计算单元),则此用法是不正确的。
这就是为什么 cloudwatch 指标是真实的,因为它是在实例外部针对单独分配给您的实例的 EC2 计算单元进行测量的。
看这里——https://forums.aws.amazon.com/thread.jspa?threadID=99993