为什么我无法从 cloudwatch 获取 EC2 实例的指标值?

Why am I unable to fetch metric values for EC2 instances from cloudwatch?

我正在尝试获取 CPU 使用 EC2 实例 i-014448f54423cc0 的 cloudwatch 指标数据,但我得到以下没有任何指标数据的输出

AWS CLI 命令

$ aws cloudwatch get-metric-statistics --metric-name CPUUtilization --start-time 2017-03-20T23:18:00 --end-time 2017-03-25T23:18:00 --period 3600 --namespace AWS/EC2 --statistics Average --dimensions Name=i-014448f54423cc0,Value=i-abcdef

输出

-----------------------------
|    GetMetricStatistics    |
+--------+------------------+
|  Label |  CPUUtilization  |
+--------+------------------+

根据 AWS 论坛上的以下主题:Link 据说只有在启用详细监控的情况下才能通过 API 访问 cloudwatch 指标数据,所以我尝试了使用和不启用详细监控的两种情况,但在这两种情况下输出都是相同的

您错误地定义了维度。您要过滤的维度(字面意思是 'InstanceId')需要定义为 Name,您的值(在本例中为实例 ID 的值)需要定义为 Value.

例子

片段:

Name=InstanceId,Value=i-014448f54423cc0

完整示例:

aws cloudwatch get-metric-statistics --metric-name CPUUtilization --start-time 2017-03-20T23:18:00 --end-time 2017-03-25T23:18:00 --period 3600 --namespace AWS/EC2 --statistics Average --dimensions Name=InstanceId,Value=i-014448f54423cc0

讨论

链接的 AWS 论坛讨论与这种情况无关,因为详细监控只能以 1 分钟的粒度进行监控。基本监控以五分钟为间隔采样数据。由于您在单个实例上请求每小时(周期 = 3600 秒)的 CPUUtilization,因此您将拥有可用的数据,无需进行详细监控。

进一步阅读