首页 > 解决方案 > 如何获取具有特定标签的所有 AWS EC2 实例及其 CPU 和 RAM 利用率的列表

问题描述

我正在努力制作命令来检索具有特定标签的所有 AWS EC2 实例及其 CPU 和 RAM 利用率的列表。有人可以帮我吗?

aws ec2 describe-instances --query 'Reservations[].Instances[].{Name: Tags[?Key==`Name`].Value | [0], Role: Tags[?Key==`Billing by Role`].Value | [0]}' --output text
aws ec2 describe-instances --query 'Reservations[].Instances[].{Name: Tags[?Key==`Name`].Value | [0], Role: Tags[?Key==`Billing by Role`].Value | [0]}' --output text

它给了我所有实例的列表,但不确定利用率。

标签: amazon-web-servicesamazon-ec2aws-cli

解决方案


您可以从 cloudwatch 获取这些指标,因此首先获取所有带有标签的实例,然后运行循环以获取每个实例的统计信息。

#!/bin/bash
filter="prod"
AWS_INSTANCE_WITH_ID=$(aws ec2 describe-instances --filter Name=tag:Name,Values="${filter}"  --query "Reservations[*].Instances[*].[InstanceId]" --output text)

for instance_id in $AWS_INSTANCE_WITH_ID
    do
    # Now get CPU against instance ID from cloud metrics one by one against that tag
    aws cloudwatch get-metric-statistics --metric-name CPUUtilization --start-time 2019-09-12T23:18:00Z --end-time 2019-09-13T23:18:00Z --period 3600 --namespace AWS/EC2 --statistics Maximum --dimensions Name=InstanceId,Value=$instance_id
    done

Amazon CloudWatch 保留如下指标数据:

周期小于 60 秒的数据点可使用 3 小时。这些数据点是高分辨率指标,仅适用于使用 StorageResolution 定义为 1 的自定义指标。周期为 60 秒(1 分钟)的数据点可使用 15 天。周期为 300 秒(5 分钟)的数据点可使用 63 天。周期为 3600 秒(1 小时)的数据点可使用 455 天(15 个月)。

获取指标统计信息


推荐阅读