AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何计算我的 EC2 实例的总网络使用量,并确定在某个日期范围内哪个实例消耗的带宽最多?
我有 Amazon Elastic Compute Cloud (Amazon EC2) 实例。我想要计算一段时间内的网络总使用量,并确定哪个实例的网络使用量最高。
简短描述
使用 Amazon CloudWatch NetworkIn 和 NetworkOut 指标来确定哪个 Amazon EC2 实例导致了网络使用量偏高。您可以聚合这些指标中的数据点来计算 EC2 实例的网络使用量。
**注意:**CloudWatch NetworkOut 指标与 AWS Cost Explorer 成本管理服务报告中使用的 DataTransfer-Out-Bytes 指标不同。CloudWatch NetworkOut 指标表示来自实例的出站网络流量,无论该实例流向何处。
使用 CloudWatch 指标的先决条件:
- 设置 AWS 命令行界面 (AWS CLI) 环境。有关详细信息,请参阅什么是 AWS 命令行界面?如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
- 为您用于运行 AWS CLI 的 AWS Identity and Access Management (IAM) 用户或角色启用 cloudwatch:GetMetricStatistics 权限。如需详细信息,请参阅 Amazon CloudWatch 的操作、资源和条件键。
- 请使用 Bash shell 来运行脚本。
**注意:**以下解决方法仅适用于您可以在 Amazon EC2 控制面板中看到的实例。下面的 Bash shell 脚本不适用于已终止的实例。对于已终止的实例,请以空格分隔的格式将实例 ID 添加到脚本中。
空格分隔的格式示例:
ADD_INSTANCES="i-xxxx i-yyyy i-zzzz"
解决方法
以下 Bash shell 脚本确定 AWS 区域中的所有 EC2 实例的网络使用情况。
1. 复制以下内容以创建脚本:
#!/bin/bash if [ $# -ne 4 ]; then echo "Usage: $0 <REGION> <NetworkIn|NetworkOut> <START_TIMESTAMP> <END_TIMESTAMP>" echo -e "\tNote: Do not change the order of parameters." echo -e "\n\tExample: $0 ap-south-1 NetworkOut 2020-06-01T00:00:00.000Z 2020-06-30T23:59:59.000Z" exit 1 fi REGION="$1" METRIC="$2" START_TIME="$3" END_TIME="$4" ADD_INSTANCES="" INSTANCES="${ADD_INSTANCES} $(aws ec2 describe-instances --region ${REGION} --query Reservations[*].Instances[*].InstanceId --output text)" || { echo "Failed to run aws ec2 describe-instances commandline, exiting..."; exit 1; } [ "${INSTANCES}x" == "x" ] && { echo "There are no instances found from the given region ${REGION}, exiting..."; exit 1; } for _instance_id in ${INSTANCES}; do unset _value _value="$(aws cloudwatch get-metric-statistics --metric-name ${METRIC} --start-time ${START_TIME} --end-time ${END_TIME} --period 86400 --namespace AWS/EC2 --statistics Sum --dimensions Name=InstanceId,Value=${_instance_id} --region ${REGION} --output text)" [ "${_value}x" == "x" ] && { echo "Something went wrong while calculating the network usage of ${_instance_id}"; continue; } echo "${_instance_id}: $(echo "${_value}" | awk '{ sum += $2 } END {printf ("%f\n", sum/1024/1024/1024)}';) GiB"; done echo -e "\nNote: If you think the values are inaccurate, please verify the input and modify if needed."
2. 使用任意名称保存脚本。例如,network_usage.sh。
network_usage.sh
3. 运行以下命令以启用脚本运行权限:
$ sudo chmod a+x network_usage.sh
4. 使用以下语法运行脚本:
$ bash network_usage.sh ap-south-1 NetworkOut 2020-06-01T00:00:00.000Z 2020-06-30T23:59:59.000Z
- 请将 ap-south-1 替换为您的实例所在的区域。有关详细信息,请参阅 Amazon EC2 可用区域。
- 指定 NetworkIn 或 NetworkOut 来计算流量方向。
- 请将 2020-06-01T00:00:00.000Z 和 2020-06-30T23:59:59.000Z 替换为要计算网络使用量的范围内的开始和结束时间戳。
以下是上述命令的输出示例:
i-025a820f5ee9f1490: 0.000099 GiB i-0b56df07325d9c0fa: 0.008475 GiB i-09ad0a93b60a233b1: 0.000000 GiB i-0ba35b570c7003ffe: 0.000000 GiB i-012cc851406584b5c: 0.000000 GiB i-0ef3921993739d772: 219.884000 GiB i-01f193931c4101cf3: 0.000000 GiB i-05ca8ccc8aa7caf76: 0.009235 GiB i-06b165356b5769581: 0.000000 GiB i-06c4d1e1cb4e9139d: 0.012911 GiB i-070b6508dd4ab5040: 0.000000 GiB i-0f29e3ba7f156dfee: 0.000000 GiB
相关信息
GNU Bash(来自 GNU 网站)
相关内容
AWS 官方已更新 2 年前