2011-07-19 26 views
6

Estoy buscando encontrar una manera de rastrear el uso del ancho de banda público por instancia o por IP elástica. Amazon no parece ofrecer estas métricas. Puede obtener el ancho de banda de entrada/salida total a través de sus mecanismos de generación de informes, pero esto incluye el ancho de banda de la red privada, y se extiende por toda la cuenta. Puede usar cloudwatch para recopilar métricas más detalladas, pero también agrupan ancho de banda público y privado. Estamos estudiando la posibilidad de implementar la nuestra, pero sus servidores están construidos con una interfaz, y todas las IP elásticas están NAT a esa interfaz. Como todo pasa por una interfaz, todo está agrupado.¿Cómo rastreo el uso de ancho de banda público en instancias EC2 o IP elásticas?

¿Alguien tiene alguna sugerencia? ¿Alguna vez te has encontrado con un problema similar? Es un entorno de servidor Linux con una interfaz desde la que debe determinar el uso de ancho de banda público.

Respuesta

0

No creo que hay alguna manera fácil de hacerlo a menos que Amazon ofrece, pero puede tener un registro en cada máquina cada vez que descargar o cargar algo,

10

Responder a una vieja pregunta para el beneficio de los empleados de Google.

Encontramos un problema similar, y lo "solucionamos" usando contadores de iptables, lo que nos da el hecho de que todo el tráfico saliente que es privado estará en una dirección IP 10.0.0.0/8, siendo el resto tráfico público. También puede rastrear la entrada para otros fines; solo se carga el tráfico público saliente, por supuesto.

Por lo tanto, crear algunos contadores:

iptables -A INPUT -s 0.0.0.0/0 --> Total incoming traffic 
    iptables -A INPUT -s 10.0.0.0/8 --> private incoming traffic 
    iptables -A OUTPUT -d 0.0.0.0/0 --> Total outgoing traffic 
    iptables -A OUTPUT -d 10.0.0.0/8 --> private outgoing traffic 

lea los contadores:

iptables -nv -L INPUT --> counters about incoming traffic 
    iptables -nv -L OUTPUT --> counters about outgoing traffic 

NOTA: Al utilizar los valores, se obtiene privada y TOTAL: así que para obtener pública, restar privada de Total antes de usarlo para cualquier cosa.

También puede ajustar a cero los contadores si no deseas reportar el ancho de banda acumulado:

iptables --zero INPUT --> clear counter 
    iptables --zero OUTPUT --> clear counter 

El siguiente es un (feo) escritura del golpe que empujará esta información a los ganglios, asumiendo que ha creado ya los contadores:

#!/bin/bash 
OUTPUT_PUBLIC=`sudo iptables -nvx -L OUTPUT | head -3 | tail -1 | tr -s [:blank:] |cut -d' ' -f3` 
OUTPUT_PRIVATE=`sudo iptables -nvx -L OUTPUT | tail -1 | tr -s [:blank:] |cut -d' ' -f3` 
let OUTPUT_PUBLIC=$OUTPUT_PUBLIC-$OUTPUT_PRIVATE 
sudo iptables --zero INPUT 
sudo iptables --zero OUTPUT 

gmetric -n "public_outbound_traffic" -v $OUTPUT_PUBLIC -t uint32 -u "bytes" 
gmetric -n "private_outbound_traffic" -v $OUTPUT_PRIVATE -t uint32 -u "bytes" 

Ejecutar este en una tarea programada, sólo asegúrese de que la frecuencia tarea programada coincide con la frecuencia de los informes de los ganglios (o de otra manera manejar los posibles desajustes).

Espero que esto ayude a alguien.

Cuestiones relacionadas