Creando un sistema de visualización de series temporales II: por qué utilizarlo y diseño básico

¿Qué son las series temporales?

No voy a ser original y voy a utilizar Wikipedia para definir las series temporales:

«Una serie temporal o cronológica es una secuencia de datos, observaciones o valores, medidos en determinados momentos y ordenados cronológicamente.»

Las series temporales pueden contener datos de diferentes ámbitos: el valor de cierre diario de la bolsa, el número de automóviles vendidos en un país, el peso de una persona a lo largo de varios años, el uso de CPU de una máquina virtual…

Es común representar las series temporales en un gráfico, en el que siempre, uno de los ejes es el tiempo.

Ejemplo de una serie temporal
Ejemplo de una serie temporal

¿Por qué utilizar un sistema de visualización de series temporales?

La visualización y el análisis de los datos que forman las series temporales nos pueden ayudar a obtener información de nuestros sistemas:

  • Poder visualizar en tiempo real los valores de las métricas más importantes de nuestra infraestructura o aplicaciones
  • Detectar patrones en el tiempo que permiten predecir el comportamiento de los sistemas
  • Asociar diferentes datos cuyo comportamiento está relacionado
  • Visualizar tendencias de uso de los diferentes elementos
  • Visualizar el impacto de cambios o actuaciones en los sistemas
  • Estudiar el uso de la infraestructura ayudando en la toma de decisiones que permitan administrar su capacidad

 

Ejemplo de infraestructuras que utilizan este tipo de sistemas

Un ejemplo de una infraestructura

visualizacionseriestemporales-02

visualizacionseriestemporales-03

 

Algunos sitios de demostración donde se puede interactuar con sistemas ya implantados:

 

 

Características que tiene que tener el sistema

Voy a intentar numerar las características que quiero que tenga el sistema que vamos a construir:

  • Fácil de utilizar y orientado a facilitar la experiencia de usuario
  • Un sistema único de visualización de datos de diferentes fuentes
  • Sus componentes tienen que ser Open Source y poder instalarse en diferentes tipos de sistemas operativos

 

Diseño del sistema

Componentes del sistema

Cuando estamos pensando en crear un sistema de visualización de series temporales, tenemos que pensar como mínimo, en 3 componentes:

  • El recolector de datos
  • El almacén de datos
  • El sistema de visualización

 

El recolector de datos

Es el encargado de obtener las métricas de los diferentes orígenes de datos y guardarlas en el sistema.

Algunos de los productos que podemos utilizar son:

  • Collectd: es un proyecto open source que permite recoger información de sistemas operativos, aplicaciones, archivos de log…
  • Telegraf: es el componente de la solución de InfluxData, escrito en Go y que dispone de diferentes plugins para recoger información de diferentes plataformas y aplicaciones (apache, docker, archivos de log, snmp, mysql …)
  • StatsD: es un demonio de red que se ejecuta en una plataforma Node.js y obtiene diferentes estadísticas.
  • Un recolector propio: también podemos utilizar un recolector creado por nosotros mismos, basado en aplicaciones o scripts (por ejemplo de PowerShell) que se encarguen de obtener los datos que deseamos y almacenarlos utilizando el API del almacén de datos.

Recolector de datos elegido: Telegraf + Scripts propios. La razón principal de elegir Telegraf es por si gran cantidad de diferentes sistemas, aplicaciones y medios de obtener datos que soporta. Donde no lleguemos con Telegraf utilizaremos scripts propios.

 

El almacén de los datos

El sistema donde vamos a almacenar la información va a ser una base de datos, pero no una base de datos cualquiera, sino una especializada en almacenar series temporales.

Estas bases de datos, como norma general, cumplen con las siguientes características:

  • Diseño específico para almacenar series temporales
  • No se usan tablas relacionales
  • Optimizadas para la escritura de un gran volumen de datos (de hasta millones de métricas por segundo)
  • Lectura/escritura secuencial de los datos
  • Un sistema de almacenamiento eficiente de forma que necesitan poco espacio para almacenar los datos

 

Algunos ejemplos de este tipo de bases de datos

  • InfluxDB: base de datos escrita en Go, y que forma parte de la solución de InfluxData
  • Graphite (Whisper): base de datos escrita en Python y que es una evolución de RDDTool.
  • OpenTSBD: base de datos que utiliza Hadoop como almacenamiento de los datos.
  • Prometheus: es un sistema completo de monitorización y alertas escrito en Go, liderado por Cloud Native Computing Foundation (fundación formada por diferentes fabricantes y que también lidera proyectos como Kubernetes)
  • DalmantierDB: base de datos escrita en Erlang con gran rendimiento y escalabilidad

 

Algunos enlaces con más información:

 

Almacén de datos elegido: InfluxDB. La razón es que es uno de los sistemas más utilizados, con buena documentación y buenos datos de rendimiento.

visualizacionseriestemporales-05

 

El sistema de visualización de los datos

En este caso, el proceso de elección es el más sencillo ya que Grafana es el absoluto lider en visualización, aunque no es el único:

  • Grafana: es la solución open source más extendida y utilizada por su facilidad de uso, diseño e integración con diferentes sistemas
  • Cronograf: es la solución que está desarrollando InfluxData, aunque en este momento no es una solución Open Source
  • Graphite-web: es el sistema de visualizacion de Graphite, y motivo por el que se desarrollo Grafana.

Sistema de visualización elegido: Grafana. Las razones principales son su gran implantación y uso, su funcionalidad, su integración con diferentes tipos de sistemas…

visualizacionseriestemporales-04

Así pues vamos a construir un sistema basado en Telegraf (y scripts de powershell) + InfluxDB + Grafana

visualizacionseriestemporales-06

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.