TICK Stack para BigData con series temporales

0
1688

Índice de contenidos


1. Introducción

En este tutorial vamos a explicar el stack tecnológico ofrecido por InfluxData que sirve para procesar,
analizar y almacenar datos de series temporales
.
Ofrece las principales piezas del stack como Open Source y un servicio administrado en la nube de pago.

InfluxData es una plataforma completa para el tratamiento de grandes cantidades de datos temporales desde su recolección hasta su análisis final.
Puede ser así una alternativa muy útil y completa para trabajar en escenarios de BigData de series temporales consiguiendo una gran optimización en su almacenamiento y su acceso.


2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2,2 GHz Intel Core i7, 16GB DDR3).
  • Sistema Operativo: Mac OS High Sierra
  • Entorno de desarrollo: Visual Studio Code
  • Software: InfluxData stack con Telegraf (1.7), InfluxDB (1.5), Chronograph (1.5), y Kapacitor (1.5)


3. Piezas

El stack de InfluxData está divido en 4 piezas principales: Telegraf, InfluxDB, Chronograf y Kapacitor.

Telegraf

Telegraf es un agente que se encarga de recopilar y reportar métricas y/o eventos desde cualquiera de las fuentes posibles.
Cuenta con más de 100 plugins o integraciones para diferentes origenes de datos.
Permite fácilmente añadir nuevos orígenes de datos ya sean con los plugins existentes para orígenes de datos muy conocidos, o hechos a medida.

Puedes ver la documentación oficial en https://docs.influxdata.com/telegraf/

InfluxDB

InfluxDB es la base de datos encargada de la persistencia, indexación y búsqueda de datos;
está especializada en tratamiento de datos de series temporales.
Puede manejar gran cantidad de inserciones y búsquedas.
También está pensada para tratar datos de métricas, monitoreo, sensores IoT, y análisis en tiempo real.
Ofrece un API http y otros protocolos para consumir sus datos como Graphite, collectd, y OpenTSDB.

Permite la configuración de políticas de retención (RP) de datos para expirar automáticamente datos antiguos o modificar el número de réplicas.
También se pueden lanzar queries continuas (CQ) para reducir la resolución de los datos,
cambiando por ejemplo el cálculo de la media de un valor con una resolución cada 10 minutos a una resolución cada 30 minutos para datos de hace más de un mes.

Puedes ver la documentación oficial en https://docs.influxdata.com/influxdb/

Chronograf

Chronograf es la parte del stack de InfluxData para visualizar y monitorizar datos fácilmente.

Permite ver y controlar el estado de todos los servidores del clúster.
Ofrece una interfaz gráfica para configurar alertas, ejecutar “jobs” y detectar anomalías en los datos utilizando las funcionalidades de Kapacitor.
Permite crear dashboards personalizados para visualización de datos con distintos tipos de gráficos.
Permite administrar la base de datos y las políticas de retención, ver las queries en curso y cancelarlas, y administrar usuarios.

Puedes ver la documentación oficial en https://docs.influxdata.com/chronograf/

Kapacitor

Kapacitor es la pieza que facilita la configuración de alertas, ejecución de “jobs” y detección de anomalías en los datos.

Permite tratar datos en “streaming” o en “batch”.
Permite ejecutar transformaciones de datos y guardarlos en InfluxDB.
Permite configurar funciones personalizadas para detección de anomalías en los datos.
Se integra con sistemas de alertas y chats como: HipChat, OpsGenie, Alerta, Sensu, PagerDuty, Slack, etc.

Puedes ver la documentación oficial en https://docs.influxdata.com/kapacitor/


4. Instalación

Esto se puede instalar libremente pero hay ciertas funcionalidades que no están incluidas en la versión Open Source.
Una gran desventaja de esta solución es que la versión que permite alta disponibilidad en la base de datos no es Open Source.

Ofrecen todo el stack como SaaS con el nombre “InfluxCloud”.
Puedes consultar los precios en https://cloud.influxdata.com/plan-picker

Si quieres instalar la versión completa por tu cuenta tienes que contratar “InfluxEnterprise”.
Más información en https://www.influxdata.com/influxenterprise/

Descargando y arrancando

Vamos a instalar sobre dockers la versión Open Source.
Clonaros el repositorio git https://github.com/influxdata/TICK-docker
Acceder a la última versión disponible (actualmente la 1.3).
Arrancar los dockers definidos en el fichero docker-compose.yml

Telegraf

Se ha lanzado telegraf con una configuración establecida en el fichero “etc/telegraf.conf” que explicaremos en el próximo apartado. En estos momentos ya se encuentra recopilando datos básicos sobre uso de cpu, ram, etc.

InfluxDB

Docker también ha levantado el servidor de InfluxDB en el puerto 8086.
Puedes verificarlo comprobando que http://localhost:8086/ping te devuelve un 20x.

Puedes arrancar un cliente de InfluxDB que hay como docker para ejecutar comandos con:

Y ejecutar algunos comandos básicos como los siguientes:

Chronograf

Tambien tendrás desplegado chronograf en el puerto 8888.
Puedes verlo accediendo a: http://localhost:8888/

Kapacitor

Por último dispondrás también de Kapacitor en el puerto 9092.
Puedes verificarlo comprobando que http://localhost:9092/kapacitor/v1/ping te devuelve un 20x.

Puedes arrancar un cliente de kapacitor que hay como docker para ejecutar comandos con:

Y ejecutar algunos comandos básicos como los siguientes:


5. Ejemplo

Telegraf

En el fichero /etc/telegraf.conf podréis ver que está configurado como destino influxdb “[[outputs.influxdb]]” con sus datos de conexión. Entre estos datos está seleccionada la base de datos “telegraf”.

Se han configurado también distintos inputs como: [[inputs.cpu]], [[inputs.disk]], [[inputs.mem]], …

InfluxDB

Ejecuta desde la consola de influxdb-cli unas consultas sobre la base de datos de “telegraf”:

Chronograf

Acede a la url de Chronograf y prueba a lanzar queries básicas sobre el uso de cpu o el nivel de ram desde “Data Explorer”.

Puedes configurar tu primer dashboard y añadirle un par de gráficos para ver cómo funciona y las facilidades que te da para explotar y visualizar fácilmente los datos de InfluxDB.

Puedes incluso configurar fácilmente alertas para Kapacitor creando una nueva regla en el apartado “Alerting”, configurando simplemente el field de una serie temporal y una condición de lanzamiento. Del mismo modo puedes configurar el mensaje y suceso que lanza esa alerta que puede ser una simple escritura en un log, un webhook, etc.


6. Conclusiones

Hemos visto que InfluxDB ofrece una plataforma muy completa
para el tratamiento óptimo de datos de series temporales permitiéndonos fácilmente entre otras cosas:
su procesamiento y recepción,
su posterior almacenamiento,
configurar políticas para que este almacenamiento sea óptimo y escalable en el tiempo,
configurar dashboards y gráficas para poder visualizar estos datos,
y configurar alertas para detectar anomalías en los datos.

Dejar respuesta

Please enter your comment!
Please enter your name here