¿Cómo calculo el uso total de la red para mis instancias de EC2 y determino qué instancia utilizó más ancho de banda dentro de un intervalo de fechas?

4 minutos de lectura
0

Tengo instancias de Amazon Elastic Compute Cloud (Amazon EC2). Quiero calcular el uso total de la red durante un período de tiempo y determinar qué instancia tuvo el mayor uso de la red.

Descripción breve

Utilice las métricas NetworkIn y NetWorkout de Amazon CloudWatch para determinar qué instancia de Amazon EC2 está causando un uso elevado de la red. Puede agregar los puntos de datos de estas métricas para calcular el uso de la red de su instancia de EC2.

Nota: La métrica NetWorkOut de CloudWatch es una métrica diferente de la métrica de DataTransfer-Out-Bytes que se utiliza en los informes de Explorador de costes de AWS. La métricaNetWorkOut de CloudWatch representa la cantidad de tráfico de red saliente de una instancia, independientemente de dónde se haya dirigido.

Requisitos previos para usar las métricas de CloudWatch:

Nota: La siguiente resolución solo funciona para las instancias que puede ver en el panel de control de Amazon EC2. El siguiente script de shell de Bash no funciona para las instancias terminadas. Para las instancias terminadas, añada los ID de instancia al script en un formato separado por espacios.

Ejemplo de formato separado por espacios:

ADD_INSTANCES="i-xxxx i-yyyy i-zzzz"

Resolución

El siguiente script de shell de Bash identifica el uso de red de todas las instancias de EC2 en una región de AWS.

1.    Copie el siguiente contenido para crear un script:

#!/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.    Guarde el script con cualquier nombre. Por ejemplo, network_usage.sh.

network_usage.sh

3.    Ejecute el siguiente comando para activar los permisos de ejecución del script:

$ sudo chmod a+x network_usage.sh

4.    Utilice la siguiente sintaxis para ejecutar el script:

$ bash network_usage.sh ap-south-1 NetworkOut 2020-06-01T00:00:00.000Z 2020-06-30T23:59:59.000Z
  • Reemplace ap-south-1 por la región en la que se encuentran sus instancias. Para obtener más información, consulte las regiones disponibles de Amazon EC2.
  • Especifique NetworkIn o NetWorkOut para calcular la dirección del flujo de tráfico.
  • Sustituya 2020-06-01T00:00:00.000Z y 2020-06-30T23:59:59.000Z por las marcas de tiempo de inicio y finalización del rango para el que desea calcular el uso de la red.

El siguiente ejemplo presenta una muestra de salida del comando anterior:

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

Información relacionada

Enumere las métricas de CloudWatch disponibles para sus instancias

GNU Bash (del sitio web de GNU)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año