【问题标题】:CloudWatch Metrics for Volume IOPS, Volume Throughput (MiB/s) and Network (Gbps)卷 IOPS、卷吞吐量 (MiB/s) 和网络 (Gbps) 的 CloudWatch 指标
【发布时间】:2020-03-28 11:52:22
【问题描述】:

我不得不在 AWS 上对一个应用程序进行故障排除,并且使用所有 CloudWatch Metrics Graphs 来解释环境健康状况并不容易,因此我决定在这里分享我的经验。

CloudWatch 为我们提供 CPU、内存*、磁盘和网络的指标。

* 获取安装 CloudWatch 代理所需的内存指标。

CPU 和内存为我们提供了以百分比为单位的指标,这很容易解释。 但是磁盘和网络并不是那么容易,例如我想检查我的卷和网络 (Gbps) 的 IOPS 和吞吐量 (MiB/s)。

我需要这些值,因为 AWS 将 EBS 限制定义为 IOPS 和吞吐量 (MB/s),并将实例网络限制定义为 Gbps。

【问题讨论】:

    标签: amazon-web-services amazon-cloudwatch amazon-ebs amazon-cloudwatch-metrics


    【解决方案1】:

    总 IOPS
    EBS Volume 为我们提供了指标VolumeReadOpsVolumeWriteOps。让我引用 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 为我们提供了指标VolumeReadBytesVolumeWriteBytes。让我引用 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 实例为我们提供指标NetworkInNetworkOut。让我引用 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
    

    【讨论】:

      猜你喜欢
      • 2013-03-23
      • 2020-10-02
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2021-02-16
      • 2011-11-24
      • 1970-01-01
      相关资源
      最近更新 更多