如何从 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 控制台中查看指标并设置将根据指定阈值触发的警报。
**注意:**使用 Amazon EBS 优化的实例暴增功能构建的基于 AWS Nitro 的 EC2 实例包括 CloudWatch 指标 EBSIOBalance% 和 EBSByteBalance%。这些指标适用于某些实例大小,这些实例大小至少每 24 小时暴增至最大性能 30 分钟。有关适用实例类型的完整列表,请参阅支持的实例类型。
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. 创建 AWS Identity and Access Management(IAM)角色。
6. 将以下策略附加到该角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:PutMetricData",
"autoscaling:DescribeAutoScalingInstances"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
7. 将 IAM policy 附加到您的 EC2 实例。这样,该脚本可将指标推送到 Amazon CloudWatch。
8. 在 CloudWatch 控制台中,为 EBSThroughoutMB 设置警报。有关更多信息,请参阅根据静态阈值创建 CloudWatch 警报或使用 Amazon CloudWatch 警报。
请确保根据使用的参数选择正确的周期。
相关信息
使用 CloudWatch 监控实例
列出实例的可用 CloudWatch 指标
Amazon EBS 优化实例