我有多个实例。我需要使用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
答案 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