lunes, 15 de abril de 2019

¿Que es el Elastic Stack?


Elastic Stack es una solución OpenSource que suele emplearse tanto como para el análisis de datos de tipo timeseries, como por ejemplo logs de aplicación, como también para datos estáticos tipo catálogo de productos o inventarios.
Se puede considerar a elasticsearch como una base de datos NoSQL  timeseries basada en el motor de búsqueda Apache Lucene.
La suite de Elastic Stack es un producto de OpenSource que está compuesta por los siguientes productos
    


  • Kibana, es la interfaz de visualización.
  • Elasticsearch, el core de la solución, es donde se guardan e indexan los documentos.
  • Logstash, es la herramienta de ingestión, transformación y enriquecimiento de datos
  • Beats, son pequeños agentes de propositio especifico que permiten ingesta de datos

Elasticsearch es el corazón del Stack, escrito en Java y con licencia Apache, es un motor de búsqueda cuya finalidad es realizar el indexado, análisis y búsqueda de documentos casi en tiempo real, esto quiere decir que permite la consulta de los datos indexados en tan solo unos segundos de delay, dependiendo de como sea la configuración de la instalación que hagamos.
Este motor escala muy bien en forma horizontal gracias a la posibilidad de particionar (sharding) y al replicado de los índices, esto nos permite usar hardware comodity y no gastar mucho dinero en instancias o hardware especializado
 Las consultas y operaciones al motor se realizan mediante una interface REST y en formato JSON con el lenguaje DSL, el cual es muy práctico y flexible.
Puede trabajar de forma de schema on read y schema on write lo cual le da mayor flexibilidad versus sus competidores
Se puede extender mediante plugins, x-pack (que merece de por si mismo un apartado) y otros como por ejemplo S3 repository plugin que permite guardar la toma de backups en AWS.

Logstash, es la parte del Stack que permite la ingesta de datos, es la solución de ETL que nos es provista por la suite. Esta pieza de software puede ser cambiada por alguna otra de preferencia como por ejemplo fluentd.
Logstash puede tomar y procesar los datos de varias entradas, logs, puertos TCP, colas de mensajería, etc y los puede enviar a múltiples destinos, entre ellos a elasticsearch o bien a una cola de mensajería.
Los datos de entrada pueden enriquecerse mediante plugins como el de GeoIP que permite identificar de que parte del mundo es la IP origen en, por ejemplo, un log de transacciones de un servidor web, logrando de esta manera una nueva dimensión en el análisis de los datos ingeridos.

Beats, estos son agentes livianos que permiten hacer ingesta de datos con mínima configuración por parte del usuario.
Los Beats pueden enviar los datos recolectados directamente a elasticsearch o a logstash si se requiere un major enriquecimiento de los mismos.
Sirven para recolectar cierto tipo de información y resolver problemáticas por ejemplo metricas de sistema operativo, ingerir un archivo, analizar tráfico de red, etc
Actualmente existen estos Beats:
  • Metricbeat, colecta métricas del sistema y servicios (cpu, memoria, etc)
  • Auditbeat, toma la información de sistema de auditoria de un equipo Linux
  • Packetbeat, captura el trafico de red (tcpdump) e interpreta multiples protocolos de aplicación
  • Filebeat, ingesta y centralización de logs (files)
  • Winlogbeat, envía la información de los eventos de Windows para procesar en elasticsearch
  • Heatbeat, monitorea la disponibilidad de servicios
  • Functionbeat, permite hacer el deploy de funciones FAAS (AWS Lambdas)


Como se puede ver existen diversos agentes para solucionar problemas de la manera mas simple y sencilla.

Kibana, es la herramienta  visual del stack en la cual podemos configurar visualizaciones para agregar a dashborads, también permite hacer gestión del cluster de elastic y manejo de los índices. Como otras partes del stack, esta también permite ser ampliada mediante plugins.
Kibana también permite hacer monitoreo en base a los datos que se ingesta, machine learning y detección de anomalías, análisis de relaciones mediante grafos, presentaciones tipo powerpoint con datos realtime en canvas.

Algunos dashboards de Kibana para resolver casos de uso

Análisis de texto en redes sociales (Twitter)




















Análisis de datos de un sitio de e-comerce






















En resumen el Elastic Stack es una solución para análisis de datos que provee resuelve  multiples casos de uso en ya sea dashboards de operacion, dashboards gerenciales.

No hay comentarios:

Publicar un comentario