Comment calculer l'utilisation totale du réseau pour mes instances EC2 et déterminer quelle instance a utilisé le plus de bande passante dans une plage de dates ?

Dernière mise à jour : 05/01/2021

J'ai des instances Amazon Elastic Compute Cloud (Amazon EC2). Je veux calculer l'utilisation totale du réseau pendant une période de temps et déterminer quelle instance a eu le plus d'utilisation du réseau. Quelle est la marche à suivre ?

Brève description

Vous pouvez déterminer quelle instance est à l'origine d'une utilisation élevée du réseau à l'aide des métriques Amazon CloudWatch NetworkIn et NetWorkout. Vous pouvez agréger les points de données de ces métriques pour calculer l'utilisation du réseau pour votre instance.

Remarque : la métrique CloudWatch NetWorkout est une métrique différente de la métrique DataTransfer-Out-Bytes utilisée dans les rapports AWS Cost Explorer . La métrique CloudWatch NetWorkout indique la quantité de trafic réseau sortant d'une instance AWS EC2, quel que soit sa destination.

Conditions préalables à l'utilisation des métriques CloudWatch :

Remarque : la résolution suivante ne fonctionne que pour les instances EC2 visibles dans le tableau de bord Amazon EC2. Le script shell Bash suivant ne fonctionne pas pour les instances résiliées. Pour les instances résiliées, ajoutez les ID d'instance au script dans un format séparé par un espace, comme illustré dans l'exemple suivant :

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

Résolution

Le script shell Bash suivant identifie l'utilisation réseau de toutes les instances EC2 dans une région AWS.

1.    Créez un script en copiant le contenu suivant :

#!/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.    Enregistrez le script avec n'importe quel nom. Par exemple, network_usage.sh.

network_usage.sh

3.    Exécutez la commande suivante pour activer l'autorisation exécutable pour le script :

$ sudo chmod a+x network_usage.sh

4.    Utilisez la syntaxe suivante pour exécuter le script :

$ bash network_usage.sh  ap-south-1  NetworkOut  2020-06-01T00:00:00.000Z  2020-06-30T23:59:59.000Z
  • Remplacez ap-south-1 par les régions AWS où se trouvent vos instances EC2. Pour plus d'informations, consultez Régions disponibles Amazon EC2.
  • Spécifiez NetworkIn ou NetWorkout pour calculer la direction du flux de trafic.
  • Remplacez 2020-06-01T 00:00:00 .000Z et 2020-06-30T 23:59:59 .000Z par les horodatages de début et de fin dans la plage pour laquelle vous souhaitez calculer l'utilisation du réseau.

L'exemple suivant montre un exemple de sortie de la commande précédente :

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

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?