上次更新时间:2020 年 8 月 20 日
如何从 Amazon CloudWatch 获取显示 Amazon Elastic Compute Cloud (Amazon EC2) 实例的总 Amazon Elastic Block Store (Amazon EBS) 吞吐量的指标? 此外,如何设置一个警报,以在 EC2 实例达到吞吐量限制时接收通知?
简短描述对于基于 Xen 的 Amazon EC2 实例,CloudWatch 中没有用于跟踪其 EBS 吞吐量的原生 Amazon EBS 指标。但是,可以使用 EC2EBSThroughput/ebs-stats.sh 脚本测量 EC2 实例的总 EBS 吞吐量。
该脚本会收集所有挂载卷的每秒总读/写字节数,并将吞吐量作为指标推送到 Amazon CloudWatch。然后,您可以在 Amazon CloudWatch 控制台中查看指标并设置将根据指定阈值触发的警报。
注意:新的 Nitro 实例(M5 和 C5)包括 CloudWatch 指标 EBSIOBalance% 和 EBSByteBalance%。有关更多信息,请参阅 Amazon EBS 优化实例。
ebs-stats.sh 脚本在 CloudWatch 中适用于基于 Xen 的 EC2 实例。该脚本仅与 Amazon Linux、Red Hat Enterprise Linux 和 CentOS 实例兼容。当然,您可以自定义该脚本以支持其他 Linux 发行版。
注意:如果您的实例包含实例存储卷,则该脚本将会报告总吞吐量,其中包括实例存储卷的吞吐量。这意味着您可能无法从此脚本获得 EBS 吞吐量的准确测量值。
解决方法注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI。
1.对于基于 RHEL 的发行版,如果还没有 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": ,
"Effect": "Allow",
"Resource": "*"
}]
}
7.将 IAM 策略附加到您的 EC2 实例。这样,该脚本可将指标推送到 Amazon CloudWatch。
8.在 CloudWatch 控制台中,为 EBSThroughoutMB 设置警报。有关更多信息,请参阅根据静态阈值创建 CloudWatch 警报或使用 Amazon CloudWatch 警报。
请确保根据使用的参数选择正确的周期。