网络数据输出 - nmon/nload 与 AWS Cloudwatch 差异

问题描述

我们正在 EC2 实例中运行视频会议服务器。

由于这是一个数据输出(出口)繁重的应用,我们希望密切监控网络数据(因为我们为此付出了沉重的代价)。

enter image description here

如上面的屏幕截图所示,在我们的测试中,在我们的 EC2 服务器中使用 nmon(右上角)或 nload(左)将网络显示138 Mbits/s 在 nload 和 17263 KB/s 在 nmon 中非常接近 (138/8 = 17.25)。

但是,当我们在 AWS Cloudwatch(右下角)中检查网络(字节)时,显示的数字非常高(~ 1 GB/s)(这对我们正在运行的测试更有意义),这就是我们最终需要支付的费用。

为什么 nmon/nload 和 AWS Cloudwatch 有这么大的区别? 我们在这里缺少一些理解吗?我们是否没有正确看待 AWS Cloudwatch 指标?

感谢您的帮助!

编辑:

添加一个较长测试的屏幕截图,该屏幕截图显示 AWS Cloudwatch 中的平均网络输出指标在测试持续时间内持平在 1 GB 左右,而 nmon 显示平均网络输出为 15816 KB/s。

enter image description here

解决方法

来自AWS docs

NetworkOut:实例在所有网络接口上发送的字节数。此指标标识来自单个实例的传出网络流量。 报告的数字是该期间发送的字节数。如果您使用基本(五分钟)监控,您可以将此数字除以 300 以找到字节/秒。如果您有详细的(一分钟)监控,请将其除以 60。

您案例中的 NetworkOut 图表不代表当前速度,它代表所有网络接口在过去 5 分钟内发送的字节数。如果我的计算是正确的,我们应该得到以下值:

1.01 GB ~= 1027 MB (reading from your graph)

To get the average speed for the last 5 minutes:

1027 MB / 300 = 3.42333 MB/s ~= 27.38 Mbits/s

这仍然超出您的预期,尽管这只是过去 5 分钟的平均值。

,

刚刚找到了答案。

以下链接讨论了 AWS 中的数据捕获周期: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html

期间

一个时期是与特定的时间相关联的时间长度 Amazon CloudWatch 统计数据。每个统计数据代表一个聚合 在指定时间段内收集的指标数据。期间 以秒为单位定义,期间的有效值为 1, 5、10、30 或 60 的任意倍数。例如,指定一个周期 六分钟,使用 360 作为周期值。您可以调整数据的方式 通过改变期间的长度来汇总。一个时期可以是 短至一秒或长至一天(86,400 秒)。这 默认值为 60 秒。

仅限您定义的存储分辨率为 1 的自定义指标 第二个支持子分钟周期。即使设置一个选项 低于 60 的期间始终在控制台中可用,您应该选择 与指标的存储方式一致的时间段。了解更多信息 关于支持亚分钟周期的指标,请参阅高分辨率 指标。


如上面的链接所示,如果我们不使用自定义周期设置自定义指标,AWS 默认不会捕获亚分钟数据。因此,可用数据的最低分辨率是每 1 分钟一次。

因此,在我们的例子中,60 秒内的网络输出数据被聚合并捕获为单个数据点。

即使我将统计数据改为Ave​​rage,将周期改为1 秒,它仍然每 1 分钟显示一次数据。

现在,如果我将 1.01 GB(由 AWS 显示)除以 60,我会得到大约 16.8 MBps 的每秒数据,这与 nmon 或 nload 显示的数据非常接近。