Hoy tuve la necesidad de obtener el número total de bytes transferidos por mi servidor Web, para tener una noción del volumen de tráfico saliente. Esta información es útil para estimar el consumo de ancho de banda mensual requerido por un servidor, dato de suma importancia cuando se trata de servidores en la nube, donde los servicios suelen utilizar la metodología de pago por uso.



Lógicamente, la mayoría de los paneles de control de soluciones IaaS/PaaS ofrecen estadísticas de consumo de recursos. Además existen herramientas para monitorear y contabilizar el consumo de ancho de banda a nivel sistema operativo. Pero si no se cuenta con ninguna de estas alternativas, es posible obtener esta información simplemente sumando el tamaño de las respuestas, tal como queda registrado en los logs de acceso de los servidores Apache y Nginx.

Para ello se puede utilizar el siguiente comando:

FECHA="19/Apr" cat /usr/local/nginx/logs/access.log | grep "$FECHA" | cut -d'"' -f3 | cut -d' ' -f3 | paste -s -d \+ - | bc

¿Qué hace este comando? Busca en el log de accesos del servidor Web todos aquellos correspondientes con la fecha indicada, para luego obtener el tamaño de cada una de las respuestas y sumarlas. El resultado es la cantidad de bytes enviados para la fecha en cuestión. Por ejemplo:

root@linuxito:~# cat /usr/local/nginx/logs/access.log | grep "19/Apr" | cut -d'"' -f3 | cut -d' ' -f3 | paste -s -d \+ - | bc       
2072400829

Si se desea obtener el resultado expresado en megabytes, sólo es necesario dividir dos veces por 1024:

root@linuxito:~# expr $(cat /usr/local/nginx/logs/access.log | grep "19/Apr" | cut -d'"' -f3 | cut -d' ' -f3 | paste -s -d \+ - | bc) \/ 1024 \/ 1024
1976

Casi 2 gigabytes de salida por día. Bastante para un simple blog.

Si se requiere se pueden concatenar múltiples logs. También es posible utilizar zcat para descomprimir logs al vuelo, cuando se requiere obtener el tráfico para una fecha muy pasada y logrotate ha hecho su trabajo.

Tener en cuenta que este número no incluye el tamaño total involucrado en las solicitudes HTTP (tráfico entrante, enviado por los clientes). Sólo contabiliza el tráfico saliente (datos enviados por el servidor hacia los clientes). El volúmen de tráfico entrante depende mucho del tipo de aplicación Web, aunque en general es mucho menor que el saliente, y puede ser despreciado si no existe ningún mecanismo para subida de archivos multimedia.

bc es en un lenguaje de cálculo para interpretar expresiones aritméticas de precisión arbitraria. En Debian y derivados es posible instalarlo ejecutando:

# apt-get install bc


Tal vez pueda interesarte


Compartí este artículo