ICM / herramientas / ELK- Gestión de logs

ELK- Gestión de logs

11 julio 2019 | Aleix Abrie

¿Te gustaría resolver algunos de los inconvenientes que trae trabajar con la gestión de logs? Algunos de estos problemas pueden ser, por ejemplo, la detección de incidencias a tiempo real, el almacenamiento de gran cantidad de información, el tiempo de respuesta y la escalabilidad de un sistema. Esto puede llevar a convertirse en un verdadero problema por otra parte al tener que entrar a 50 servidores para encontrar una línea de log específica, tardar horas en buscar información determinada entre tantos ficheros, es como buscar una aguja en un pajar ¿Cierto? Pues no te preocupes esto tiene solución. En este artículo te damos a conocer ELK, la eficaz gestión de logs.

Con ELK podrás buscar, analizar y visualizar los datos con mayor facilidad en tableros de información 100% personalizables, además de poder manejar eficientemente gran cantidad de datos gracias a su gran escalabilidad.

Pero empezamos por el principio…

¿Qué es ELK, el gestor de logs?

ELK, gestor de logs, es un conjunto de herramientas de gran potencial de código abierto que se combinan para crear una herramienta de administración de registros permitiendo la monitorización, consolidación y análisis de logs generados en múltiples servidores. Estas herramientas son: Elasticsearch, Logstash y Kibana.

También pueden ser utilizadas como herramientas independientes, pero la unión de todas ellas hace una combinación perfecta para la gestión de registros.

¿Qué componentes forman ELK, gestor de logs?

Elasticsearch

Es una base de datos distribuida. Distribuye toda la información en todos los nodos, por lo tanto, es tolerante a fallos y tiene alta disponibilidad. Además, distribuye la información y distribuye procesamiento. Cuando se realiza una consulta o búsqueda y esa información se encuentra distribuida, será cada nodo el que procese dicha información y devuelva los resultados. Por tanto, podemos obtener mejores rendimientos.

Logstash

Es la parte de preprocesamiento antes de guardar la información en Elasticsearch que hemos comentado, donde recogemos una entrada, trabajamos los eventos y sacamos por una salida, antes de almacenarlos en las bases de datos.

Kibana

Es el más visual, dónde vamos a generar las visualizaciones sobre la información y dónde vamos a generar los dashboards.

Un ejemplo de dashboard que nos daría información de manera muy visual:

Estos tres componentes son los pilares de ELK, pero no son los únicos módulos que tiene este gestor de logs. Alrededor de ellos tenemos otros:

Beats

Son una especie de shippers, de recolectores de información. Recogen información, ya sea de un fichero, log de datos, eventos, métricas del sistema (CPU, RAM), hacen comprobaciones de qué servicios se encuentran activos, analizan a nivel de red los paquetes, el tiempo de respuesta entre ellos…

¿Qué problemas intenta resolver Logstash de ELK, gestor de logs?

Falta de consistencia

Tenemos muchos dispositivos con logs, y dentro de nuestros servidores, por ejemplo, tenemos distintos servicios funcionando y cada servicio tiene un tipo de log distinto. Los administradores de sistemas, DevOps, administradores web o desarrolladores, necesitan acceder a dichos logs para comprobarlos, para lo que hay una gran dificultad, ya que los formatos varían y son difíciles de entender.

Formato de tiempo

Cada log puede venir con un formato de tiempo distinto.

Nos podemos encontrar en el caso que, dependiendo de que servicio provenga el log, el formato de tiempo puede ser totalmente diferente y, sin un tratamiento para sacar el formato correcto, no podríamos tener correctamente el tiempo de la entrada del log así que es muy importante poder sacar el formato de tiempo correctamente de cada posible servicio de cada servidor.

Descentralizado

Los logs se encuentran repartidos en todos los servidores que tengamos. Cada servidor puede tener un tipo de log y dentro de un servidor puede haber diferentes rutas donde encontrarlos. Un administrador de sistemas, si tiene pocos servidores que administrar, puede acceder a ellos por “ssh” y, usando la herramienta “grep”, ir buscando las entradas del log que nos puedan dar información extra, pero si tienes muchos más, esta opción no es escalable.

Falta de conocimientos

Falta de conocimientos o que no se implementan bien las políticas. Pueden deberse a varios motivos:

  • Las personas que tienen que acceder a un log no tienen permiso para acceder al mismo, por políticas de empresa.
  • Estas personas no tienen experiencia para entender una línea de log. Algunos logs que tiene mucha información incluida en campos y cuando la información es tanta, a veces es complicado saber qué representa cada número o cadena de texto.
  • Desconocen dónde se encuentran los logs, cómo se actualizan, cómo se van repartiendo, si se van borrando cada día…

¿Qué busca realmente Elasticsearch?

Lo que se consigue con ELK es coger toda esta información, procesarla y almacenarla de forma distribuida. Así se va a poder escalar en BigData y obtener buenos rendimientos con grandes cantidades de información, y transformarla en visualizaciones, con las que poder identificar anomalías, comportamientos, eventos, picos, etc…, de forma gráfica y visual, como la diapositiva mostrada.

Realmente… ¿Qué hace ELK, gestor de logs?

A modo resumen, podemos decir que ELK, gestor de LOGS, lo que hace es:

  • Recolecta logs de eventos y de aplicaciones.
  • Procesa dicha información y la pone a disposición de las personas que la necesitan: Tiene módulos de seguridad para implementar que cada usuario accede a la información que realmente pueda administrar, evitando que un usuario acceda a información que no le pertenece.
  • Formatea los campos y los convierte en opciones de búsqueda y filtrado: Hay logs que tienen formatos irregulares, ya sean de aplicaciones propias o de servicios que no sigan ningún formato. Dichos logs son prácticamente cadenas de texto muy complicadas de entender. Con Logstash (parte de preprocesamiento que veremos a continuación) trabajaremos con dichos logs para convertirlos en distintos campos, que después podremos utilizar para el filtrado.
  • Presenta esa información y esos campos en visualizaciones, donde podremos realizar búsquedas, filtrados, agregaciones y ver la información muchos mejor que módulos de texto.

Resumen final de ELK, gestor de logs

A modo resumen podemos ver en esta imagen, la arquitectura y la ingesta de datos en ELK:

 

Tenemos todas nuestras fuentes de datos, que envían información a Logstash, que al tener muchos plugins de entrada y salida, podemos introducir gran cantidad de datos. Esos datos son procesados antes de almacenarlos en la base de datos de Elasticsearch, y con Kibana se montan las visualizaciones que accedan a esa información, para poder así monitorizarlas.