如何从 Amazon CloudWatch 获取显示 Amazon Elastic Compute Cloud (Amazon EC2) 实例的总 Amazon Elastic Block Store (Amazon EBS) 吞吐量的指标? 此外,如何设置一个警报,在 EC2 实例达到吞吐量限制时接收通知? 

CloudWatch 中没有用于跟踪基于 Xen 的 Amazon EC2 实例的 EBS 吞吐量的原生 Amazon EBS 指标。但是,可以使用 EC2EBSThroughput/ebs-stats.sh 脚本测量 EC2 实例的总 EBS 吞吐量。

该脚本会收集所有挂载卷的每秒总读/写字节数,并将吞吐量作为指标推送到 Amazon CloudWatch。然后,可以在 Amazon CloudWatch 控制台中查看指标和设置根据所指定的阈值触发的警报。

注意:新的 Nitro 实例 M5 和 C5 包括 CloudWatch 指标 EBSByteBalance% 和 EBSIOBalance%。有关更多信息,请参阅 Amazon EBS 优化实例

ebs-stats.sh 脚本适用于 CloudWatch 中基于 Xen 的 EC2 实例,且仅与 Amazon Linux、Red Hat Enterprise Linux 和 CentOS 实例兼容。但是,可以为其他 Linux 发行版自定义该脚本。

注意:如果您的实例包含实例存储卷,则该脚本将报告总吞吐量,包括实例存储卷的吞吐量。这意味着您可能无法从此脚本获得 EBS 吞吐量的准确测量值。

1.    对于基于 RHEL 的发行版,如果还没有 AWS 命令行界面 (AWS CLI),请先完成安装。

2.    下载 ebs-stats.sh 脚本。

3.    将脚本放在您的实例上,然后使其可执行。您必须以“根”用户或“sudo”身份运行脚本;否则将失败。

$sudo chmod +x ebs-stats.sh 

4.    在 AWS CLI 中,在后台运行以下命令,设置所需的 ebs-stats.sh 运行时频率:

$sudo nohup ./ebs-stats.sh example-sleep-interval &

注意:将 example-sleep-interva 替换为各个数据点之间所需的秒数。 

5.创建 IAM 角色

6.将以下策略附加到该角色:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Action": [
      "cloudwatch:ListMetrics",
      "cloudwatch:GetMetricStatistics",
      "cloudwatch:PutMetricData",
      "autoscaling:DescribeAutoScalingInstances"
    ],
    "Effect": "Allow",
    "Resource": "*"
  }]
}

7.    将 IAM 策略附加到您的 EC2 实例。这样,该脚本可将指标推送到 Amazon CloudWatch。

8.    在 CloudWatch 控制台中,为 EBSThroughoutMB 设置警报。有关更多信息,请参阅根据 CloudWatch 指标创建 CloudWatch 警报使用 Amazon CloudWatch 警报

请确保根据使用的参数选择正确的周期。


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS Support 中心

发布时间:2019 年 3 月 29 日