如何从 Amazon CloudWatch 获取显示 EC2 实例的 EBS 吞吐量的指标,以及之后如何设置警报以在 EC2 实例达到吞吐量限制时向我发出通知?

2 分钟阅读
0

如何从 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 优化实例

AWS 官方
AWS 官方已更新 1 年前