Come faccio a calcolare l'utilizzo totale della rete per le mie istanze EC2 e determinare quale istanza ha utilizzato la maggior larghezza di banda in un intervallo di date?

4 minuti di lettura
0

Sono presenti istanze Amazon Elastic Compute Cloud (Amazon EC2). Voglio calcolare l'utilizzo totale della rete per un periodo di tempo e determinare quale istanza ha avuto il maggior utilizzo della rete.

Breve descrizione

Utilizza le metriche Amazon CloudWatch NetworkIn e NetworkOut per determinare quale istanza Amazon EC2 causa un elevato utilizzo della rete. Puoi aggregare i punti dati da queste metriche per calcolare l'utilizzo della rete per la tua istanza EC2.

Nota: la metrica CloudWatch NetworkOut è una metrica diversa dalla metrica DataTransfer-Out-Bytes utilizzata nei report dell'Esploratore dei costi AWS. La metrica CloudWatch NetworkOut rappresenta la quantità di traffico di rete in uscita da un'istanza, indipendentemente da dove è andata.

Prerequisiti per l'utilizzo delle metriche di CloudWatch:

Nota: la seguente risoluzione funziona solo per le istanze che puoi vedere nella dashboard di Amazon EC2. Il seguente script di shell Bash non funziona per le istanze terminate. Per le istanze terminate, aggiungi gli ID di istanza allo script in un formato separato da spazi.

Esempio di formato separato da spazi:

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

Risoluzione

Il seguente script di shell Bash identifica l'utilizzo della rete di tutte le istanze EC2 in una regione AWS.

1.    Copia il seguente contenuto per creare uno 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.    Salva lo script con un nome qualsiasi. Ad esempio, network_usage.sh.

network_usage.sh

3.    Esegui il comando seguente per attivare l'autorizzazione all'esecuzione dello script:

$ sudo chmod a+x network_usage.sh

4.    Usa la seguente sintassi per eseguire lo script:

$ bash network_usage.sh ap-south-1 NetworkOut 2020-06-01T00:00:00.000Z 2020-06-30T23:59:59.000Z
  • Sostituisci ap-south-1 con la regione in cui si trovano le tue istanze. Per ulteriori informazioni, consulta le regioni disponibili di Amazon EC2.
  • Specifica NetworkIn o NetworkOut per calcolare la direzione del flusso di traffico.
  • Sostituisci 2020-06-01T00:00:00.000Z e 2020-06-30T23:59:59.000Z con i timestamp di inizio e fine nell'intervallo per il quale desideri calcolare l'utilizzo della rete.

L'esempio seguente mostra un esempio di output del comando precedente:

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

Informazioni correlate

Elenca le metriche CloudWatch disponibili per le tue istanze

GNU Bash (dal sito Web di GNU)

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa