Measuring VM Traffic on CloudSigma

Cómo medir el tráfico de un su VM con la API de Cloudsigma y RRDtool

Aprenda a medir el tráfico de sus máquinas virtuales en CloudSigma usando las sencillas instrucciones a continuación, para obtener, almacenar y graficar el tráfico de nuestras diferentes interfaces de red. Para obtener los estadísticos de cada interface podemos hacer uso de la API de CloudSigma y un sencillo script que almacenará los datos de cada interfaz de red.

La base de datos a usar en este ejemplo es RRDTool que es una base de datos especializada en series de tiempo, también puedes usar otras bases de datos similares como InfluxDB o Graphite, pero para este ejemplo seguiremos con el viejo y confiable RRDTool que se encuentra disponible en todas las distribuciones de Linux, además también necesitaremos instalar el comando jq.

El primer paso será crear una base de datos donde almacenaremos el tráfico de nuestra interface de red a monitorear en nuestro directorio designado:

Con este comando estamos creando una base de datos con dos Data Sources (DS), una para el tráfico de entrada (traffic_in) y otra para el tráfico de salida (traffic_out). La siguiente parte será obtener los estadísticos de la interface con la API de CloudSigma. Primero que nada obtendremos la cadena para autenticarnos con la API de CloudSigma:

Con esto obtendremos una cadena de texto con el usuario y password en base 64 que usaremos en el script para obtener los datos:

Este script obtendrá los bytes recibidos y enviados en la interface con IP pública y los guardará en el archivo rrd. Es importante notar que el tx y rx para la API de cloudsigma están invertidos en la máquina virtual. Es decir que si la API reporta 20 Megabytes de recepción (rx), la máquina virtual reportará esos 20 Megabytes en la transmisión (tx)

Ejemplo:

Ahora hay que hacer este comando periódico para que esté obteniendo los estadísticos continuamente, así que creamos un cronjob que cada 5 minutos esté alimentanodo los datos con el comando crontab -e y agregamos la siguiente línea al final del archivo.

Esto alimentará los datos al archivo rrd.

Finalmente podemos crear gráficas o consultar intervalos de datos también con rrdtool, digamos que queremos obtener la gráfica y el total del ancho de banda consumido en los últimos 7 días. Para el intervalo de tiempo usamos los parámetros --end now --start end-7d.

Con esto crearemos un gráfico con el resumen total del ancho de banda calculado por las funciones VDEF. Los intervalos de tiempo pueden calcularse como segundos desde epoch (Unix time) o especificando la referencia.

Por último les comparto la documentación y sitio oficial de RRDtool para aprender más sobre esta herramienta que tiene muchas más asombrosas funciones:

https://oss.oetiker.ch/rrdtool/doc/index.en.html