Round Robin Databases

En múltiples ocasiones nos vemos obligados a tratar series temporales. El tiempo es un factor importante en nuestra vida y necesitamos gestionar datos con una componente temporal intrínseca a ellos: kilometraje del coche, acciones de bolsa, temperatura…

Una serie temporales se caracteriza por contener datos tomados a intervalos de tiempo regulares, es decir, se compone de pares medida-momento en el que se tomó. Por esta naturaleza surgen algunas cuestiones:

Pérdida de medidas:
Si estamos tomando valores de temperatura cada minuto y nos llaman por teléfono perderemos alguna medida ¿Qué hacemos? ¿Nos la inventamos?
Imprecisión:
Como no somos perfectos puede que en lugar de tomar las medidas exactamente en el momento apropiado la tomemos un par de segundos antes o después ¿Cómo influye esto?
Histórico
El último dato siempre es importante pero ¿sigue siendo importante el dato de hace un día? ¿El de un mes? ¿Y el del año pasado?

Evidentemente, no es muy útil tener a una persona midiendo la temperatura cada minuto pero si es factible que lo haga una máquina. En ese caso, la máquina debe tener estos problemas resueltos para realizar su labor.

Sopa de siglas

En informática existen múltiples series temporales (temperatura exterior o de los componentes internos, correos enviados/recibidos/filtrados, capacidad ocupada en los discos duros, usuarios conectados a la máquina, procesos que gestiona el sistema…) que pueden ser de interés. Y por eso disponemos de una herramienta apropiada para ello las bases de datos cíclicas (Round Robin Databases).

Una de las series de interés es el tráfico de red. Para monitorizar el tráfico que soportan nuestros routers surge un sencillo protocolo denominado SNMP (Simple Network Management Protocol). De forma muy simple, cuando se le pregunta a un router usando el protocolo éste responde el número de bits o bytes que han atravesado cada una de sus conexiones. Es algo similar al cuentakilómetros del coche: indica cuántos kilómetros (bytes) lleva recorridos (transmitidos).

Para analizar esta información disponemos de una aplicación denominada MRTG (Multi Router Traffic Grapher). Ésta se encarga de preguntar cada cinco minutos a todos los routers que se le indican y almacena dos variables: ds0 (entrada) y ds1 (salida). A partir de estas variables se genera un informe HTML y gráficas.

Ejemplo de gráfica generado con MRTG

Gráfica generado con MRTG (Wikipedia)

Viendo el éxito de la aplicación, y los malos usos que se hacía de ella, el mismo autor crea una aplicación más flexible que permita almacenar cualquier tipo de datos: RRDTool. Esta aplicación extrae la lógica de tratamiento de los datos y generación de gráficas usada en MRTG y permitiendo definir cualquier tipo de base de datos cíclica.

Ejemplo de gráfica generado con RRDTool

Gráfica generado con RRDTool (Wikipedia)

RRDTool permite almacenar cualquier tipo de serie temporal, corrigiendo las imprecisiones en la toma o la pérdida de valores mediante interpolación, cambiar su resolución agregando los valores (medias, máximos, mínimos) y generar gráficas temporales con cualquier formato.

Es una herramienta de gran interés para monitorizar cualquier sistema de forma automática.