Saltar al contenido

ELASTIC STACK (ELK)

Hola, bienvenidos a un nuevo post, en esta entrada quiero hablar sobre que es elastic stack y sus componentes por lo que será un post corto.

Como siempre me gusta ir al grano, y no os quiero poner toda la documentación de elastic que dicho sea de paso es bastante extensa…, actualmente en el momento de este post la versión de elastic es la 7.5.0, pero cambian bastante rápido.

¿Que es elastic stack?

Bien, elastic stack son un conjunto de herramientas que trabajan de forma conjunta para conseguir un objetivo, en este caso la motorización, analítica de logs y explotación de información.

Esta herramienta sustituye a ELK ya que incorpora otras herramientas como los beats, que mas adelante veremos que es y los tipos que tenemos.

Componentes

Una explicación sencilla de los componentes que forman el Elastick Stack:

Beats

Se encargan de recolectar la información puede ser logs, métricas del sistema, de red, etc…, Voy a nombrar los que mas se suelen utilizar:

  1. MetricBeat: Suele extraer métricas del sistema o un proceso que corre en una maquina, por ejemplo un apache, tiene módulos que permiten este comportamiento.
  2. PacketBeat: Este beat esta mas orientado a recoger estadísticas de la red
  3. HeartBeat: Esta orientado a checkear el estado de los servicios que le indiquemos.
  4. FileBeat: Es uno de los beats mas complejos y mas utilizados, se utiliza sobre todos para la recogida de logs.
  5. WinlogBeat: Para monitorizar sistemas Windows.
  6. AuditBeat: Ofrece métricas del Sistema Operativo.

Logstash

Es una de las herramientas mas potentes y complejas del stack, se utiliza para procesar la información recolectada por los beats, por si misma también puede recolectar datos.

Como podemos ver en la imagen se divide en tres partes, dentro de estas tres partes hay muchas opciones posibles, no vamos a entrar en detalle en este post, se necesitaría una entrada por cada parte…

  1. input: es la fuente de entrada que le va a enviar los datos a logstash, aunque como dijimos ella misma también puede recolectar datos.
  2. filters: Es el tratamiento que se va a realizar de la información que recibimos en el input.
  3. outputs: Es donde se va a enviar los datos procesados por logstash, normalmente a elasticsearch.

ElasticSearh

Es la base de datos donde se va a almacenar la información procesada.

Si logstash es una herramienta compleja, elasticsearch no se queda atrás por lo que no puedo explicar de forma resumida todo lo que abarca, en este caso solo voy a hablar de los tipos de nodos:

  1. Master: Encargado de gestionar el estado del clúster, y realiza tareas ligeras.
  2. Data: Tiene la capacidad de almacenar shards y replicas, contendrá los datos.
  3. Ingest: Permite definir pipelines para procesar la información que llega a elasticsearch.
  4. Coord: Nodos a los que se les deshahilita todo lo anterior, solo reciben las peticiones y las envían a los otros nodos.
  5. Tribe: Muy similar al nodo de coord., pero coordina búsquedas en un clúster diferente de elastic.

Os invito a seguir investigando sobre que es un cluster, un indice, un shard e incluso una replica para entender mas a fondo elasticsearch que es una de las bases de datos NoSQL mas utilizadas en la actualidad para este propósito.

ElasticSearh tiene una Rest API, permite administrar la base de datos mediante peticiones GET.

Otra cosa importante a tener en cuenta cuando se tiene un cluster de maestros en ElasticSearch es evitar el Split Brain,

Explicación breve del split brain:

Este problema llega cuando tenemos mas de dos maestros, por ejemplo tres, uno de los tres es marcado como principal, si uno de los nodos maestros pierde la conexión con el maestro principal, este se auto-proclamaría como maestro generando otro cluster independiente de ElasticSearch.

Se solucionaría cambiando la propiedad “discovery.zen.minimum_master_nodes” a 2, no siempre tiene que ser dos, pero lo podemos calcular con la siguiente formula:

Esto quiere decir que para que un nodo se proclame como maestro debe haber al menos dos maestros conectados entre si.

Kibana/Grafana

Son las herramientas de visualización de datos mas conocidas y mas utilizadas, simplemente sirven para realizar consultas sobre ElasticSearh o otra base de datos en caso de Grafana, y representar gráficamente la información.

Kibana

Esta herramienta tiene muchas características de pago, pero actualmente ha mejorado mucho y le esta comiendo terreno a Grafana.

A partir de la versión 7.1 elastic permite añadir seguridad a elasticsearh y a kibana

Es la que mejor se integra con elasticsearch ya que esta creada para ello.

Grafana

Es una herramienta de software libre que tiene bastante potencia, no solo se puede integrar con elasticsearch si no con otras bases de datos como influxdb, etc…

También incorpora seguridad y alertas, en Kibana desgraciadamente el modulo de alertas aun es de pago.

Bien hasta aquí todo lo que quería comentaros sobre este conjunto de herramientas que todas ellas juntas son llamadas Elastic Stack y que como vimos al principio nos permite la Analítica de logs y la monitorización de sistemas.

Espero que os haya sido de utilidad y si es así, ayúdame a compartir este post, muchas gracias.

Raúl Cazallas

Deja una respuesta

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