总 IOPS
EBS Volume 为我们提供了指标VolumeReadOps 和VolumeWriteOps。让我引用 AWS 文档。
VolumeReadOps - 指定时间段内的读操作总数。
要计算该时段内每秒的平均读取操作数(读取 IOPS),请将该时段内的总读取操作数除以该时段内的秒数。
VolumeWriteOps - 指定时间段内的写操作总数。
要计算该周期内每秒的平均写入操作数(写入 IOPS),请将该周期内的总写入操作数除以该周期内的秒数。
参考:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cloudwatch_ebs.html
要获得总 IOPS,我们需要 (VolumeReadOps + VolumeWriteOps) / SecondsInPeriod。
幸运的是,CloudWatch 通过Expression 帮助我们。使用下面的表达式,函数PERIOD是我们这里的朋友。
m1 = VolumeWriteOps - Sum
m2 = VolumeReadOps - Sum
Expression: (m1+m2)/PERIOD(m1)
参考:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html
总吞吐量 (MiB/s)
EBS Volume 为我们提供了指标VolumeReadBytes 和VolumeWriteBytes。让我引用 AWS 文档。
VolumeReadBytes - 提供有关指定时间段内的读取操作的信息。 Sum 统计数据报告在此期间传输的总字节数。
VolumeWriteBytes - 提供指定时间段内的写操作信息。 Sum 统计数据报告在此期间传输的总字节数。
这两个指标都为我们提供了bytes 中的值,但我们希望它们在MiB 中,所以要转换我们需要除以1048576,这是1024 * 1024 的结果。让我详细解释一下。
1024 bytes = 1 KiB
1024 KiB = 1 MiB
要获得MiB/s 中的总吞吐量,我们需要((VolumeReadBytes + VolumeWriteBytes) / 1048576) / SecondsInPeriod。
使用下面的表达式,函数PERIOD是我们这里的朋友。
m1 = VolumeWriteBytes - Sum
m2 = VolumeReadBytes - Sum
Expression: ((m1+m2)/1048576)/PERIOD(m1)
总网络 (Gbps)
EC2 实例为我们提供指标NetworkIn 和NetworkOut。让我引用 AWS 文档。
NetworkIn - 实例在所有网络接口上接收的字节数。此指标标识单个实例的传入网络流量。
报告的数字是在此期间接收的字节数。如果您使用的是基本(五分钟)监控,您可以将此数字除以 300 以找到 Bytes/second。如果您有详细的(一分钟)监控,请将其除以 60。
NetworkOut - 实例在所有网络接口上发送的字节数。此指标标识来自单个实例的传出网络流量。
报告的数字是在此期间发送的字节数。如果您使用的是基本(五分钟)监控,您可以将此数字除以 300 以找到 Bytes/second。如果您有详细的(一分钟)监控,请将其除以 60。
参考:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html
这两个指标都为我们提供了 bytes per period 中的值,但我们希望它们在 gigabits / second 中。
要将“周期”转换为“秒”,我们只需要除以300(因为我使用的是标准监控)。
要将bytes 转换为gigabits,我们需要除以0.008,这是(1000 / 1000 / 1000) * 8 的结果。让我详细解释一下。
1000 bits = 1 kilobits
1000 kilobits = 1 megabits
1000 megabits = 1 gigabits
1 byte = 8 bits
要获得Gbps 中的总网络,我们需要((NetworkIn + NetworkOut) / 300) / 0.008。
m1 = NetworkIn - Sum
m2 = NetworkOut - Sum
Expression: ((m1+m2)/300)/0.008