我不得不在AWS上对一个应用程序进行故障排除,并且使用所有CloudWatch Metrics Graphs来解释环境的健康状况并不容易,所以我决定在这里分享我的经验。
[CloudWatch为我们提供了CPU,内存*,磁盘和网络的指标。
*获得安装CloudWatch Agent所需的内存指标。
CPU和内存为我们提供了百分比的度量标准,这显然可以解释。但是磁盘和网络并不是那么容易,例如,我想检查我的卷和网络(Gbps)的IOPS和吞吐量(MiB / s)。
我需要这些值,因为AWS将EBS限制定义为IOPS和吞吐量(MB / s),并将实例网络限制定义为Gbps。
总IOPSEBS交易量为我们提供了指标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交易量为我们提供了指标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,以找到字节/秒。如果您有详细的监视(一分钟),请将其除以60。
NetworkOut
-实例在所有网络接口上发送的字节数。此度量标准标识单个实例的传出网络流量。报告的数字是在此期间发送的字节数。如果使用的是基本(五分钟)监视,则可以将该数字除以300,以找到字节/秒。如果您有详细的监视(一分钟),请将其除以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