Todo controlado con Grafana Loki

Volvemos a la carga hablando de contenedores y cómo podemos mejorar dicho entorno, ya sea en un solo nodo o en varios, utilizando plataformas como Kubernetes. Para ello vamos a hablar de Grafana Loki, una herramienta, inspirada en Prometheus, que nos promete (atención el chistaco xd) poder indexar los registros de nuestros sistemas y visualizarlos en un panel con Grafana. Pero vamos a ir más allá, ya que os explicaré cómo utilizarlo para controlar a nuestros amigos los contenedores.

Logo de Grafana Loki

Como viene siendo habitual, mi entorno con Docker lo tengo en un VPS en mi proveedor de confianza Clouding.io, empresa que os recomiendo.

¿Qué es Grafana Loki?

Se trata de un sistema de agregación de registros de múltiples clientes y fuentes. Este proyecto fue iniciado y patrocinado por Grafana en 2018 y actualmente utiliza una licencia AGPLv3 Está inspirado en Prometheus. Se utiliza de manera conjunta con otras piezas que son Promtail y el propio Grafana.

Algunas de sus ventajas:

  • Es realmente fácil comenzar porque puede enviar registros en cualquier formato, desde cualquier fuente, utilizando una amplia gama de clientes.
  • El 100 % de persistencia en el almacenamiento de objetos significa que obtiene una escala de petabytes, un alto rendimiento y un almacenamiento rentable y duradero.
  • Podemos crear métricas y generar alertas a partir de sus líneas de registro.
  • La ausencia de requisitos de formato de registro de ingestión le brinda más flexibilidad y la opción de formatear en el momento de la consulta.
  • Permite seguir sus registros en tiempo real para ver los registros a medida que ingresan al sistema, ver cómo actualiza los registros después de un tiempo determinado, ver los registros para una fecha en particular, etc. Se integra de forma nativa con Prometheus, Grafana y K8s para que podamos movernos sin problemas entre métricas, registros y seguimientos dentro de una sola interfaz de usuario

¿Cómo funciona?

Grafana Loki funciona juntamente con otras piezas, primero recoge los registros que va recopilando Promtail. Entonces Loki en vez de indexar dichos registros, se encarga de agruparlos en secuencias y se indexan en etiquetas.

Esquema de funcionamiento (extraído de la página web oficial)

Grafana Loki utiliza el lenguaje LogSQL, para explorar sus registros. Podemos realizar las consultas directamente desde el panel de Grafana, para visualizar los registros junto con otras fuentes de datos, o bien con LogCLI, para aquellos que prefieren una experiencia de línea de comandos.

También podemos configurar alertas para que lo Loki evalúe sus datos de registro entrantes. Podemos configurarlo para que nos envíe alertas a un Prometheus Alertmanager

Manos a la obra

A mi me interesaba desplegar esta herramienta vía Docker, por lo que para ello primeramente he utilizado el docker-compose que nos ofrece la propia Grafana, que podemos encontrar aquí: Grafana.com Loki for Docker

Lo que pasa que utilizando este docker-compose, solo podemos consultar, a no ser que lo modifiquemos, los ficheros de registros del sistema operativo, pero no de la actividad de los contenedores.

Por lo que, investigando un poco, me he encontrado con este otro proyecto en Github, que nos permite poder consultar únicamente los registros de los contenedores: Github.com – Brpaz – Logs with Loki

Evidentemente también lo podemos modificar para que también recoja información del sistema operativo.

Listamos los contenedores que tenemos funcionando

Una vez desplegada la herramienta, junto con el resto de piezas. Podemos empezar a obtener información:

Muestra del resultado obtenido con Grafana Loki

Aquí es importante mencionar que si queremos que se muestra la información de los contenedores, estos tienen que tener indicados en sus respectivos docker-compose, que están en la misma red que Grafana Loki y que además, tengan indicados que éste se va encargar de recopilar los registros.

Aquí os dejo un ejemplo de un fichero de configuración para Minio, del que ya os hablé:

Ejemplo de configuración para habilitar los registros para Grafana Loki

De esta manera nos aseguramos que Grafana Loki es capaz de recoger los registros generadoes por este contenedor.

Y esto es todo, os invito a jugar con este producto al que le veo muchas posibilidades.

Fuentes consultadas

Documentación de Grafana Loki (en inglés)