如何从实例列表中检索cloudwatch指标

时间:2018-08-01 10:26:07

标签: amazon-web-services amazon-cloudwatch

我有多个实例。我需要使用aws cli从其中的一部分(不是全部)中检索一些指标。我尝试多次将InstanceId指定为Dimension,但它仅考虑on值。例如上面的命令,仅返回实例i-xxxxxx的公制值(忽略i-yyyyyyy)

aws cloudwatch get-metric-statistics  --namespace AWS/EC2 \
    --metric-name CPUUtilization \
    --statistics Maximum
    --dimensions Name=InstanceId,Value=i-yyyyyyyyyy Name=InstanceId,Value=i-xxxxxxxxx \
    --start-time 2018-08-01T00:00:00Z --end-time 2018-08-01T10:00:00Z --period 300 

另外一条评论:可以通过使用标签过滤实例列表来获得子集:

aws ec2 describe-instances --filter Name=tag:app,Values=myapp \
    --query 'Reservations[*].Instances[*].InstanceId' --output text

1 个答案:

答案 0 :(得分:0)

您使用了错误的API:get-metric-statistics旨在返回单个指标的时间序列数据,该指标由其所有维度标识。我怀疑CLI将此字段解释为一个关联数组,因此第二个实例ID覆盖了第一个实例ID。

最简单的解决方案(假设您在Linux上使用bash)是使用for循环来检索每组指标:

for instance in i-yyyyyyyyyy i-xxxxxxxxx
do aws cloudwatch get-metric-statistics \
                  --dimensions "Name=InstanceId,Value=${instance}" \
                  ...
done