Help build the future of open source observability software Open positions

Check out the open source projects we support Downloads

Grot cannot remember your choice unless you click the consent notice at the bottom.

Loki 2.4 es más fácil de utilizar con un nuevo modelo de despliegue simplificado

Loki 2.4 es más fácil de utilizar con un nuevo modelo de despliegue simplificado

10 de noviembre de 2021 6 min

¡Grafana Loki 2.4 ha llegado!

Trae una lista enorme de nuevas funciones muy interesantes, pero hay un par de cosas en las que quiero centrarme. 

  1. Loki ahora acepta escrituras fuera de orden.
  2. Ejecutar Loki es más fácil que nunca.

Asegúrese de consultar todas las notas de la versión y, por supuesto, la guía de actualización para obtener toda la información más reciente sobre la actualización de Loki. Eche también un vistazo a nuestra sesión de la ObservabilityCON 2021 Por qué Loki es más fácil de usar y ejecutar que nunca.

Compatibilidad con escrituras fuera de orden

La estrictarigurosa restricción de orden en Loki ha representado durante mucho tiempo un reto para muchos usuarios y créame cuando le digo que no lo hemos hecho solo para poner las cosas difíciles. Incorporar entradas de log de forma rápida y eficiente en términos de memoria es todo un reto. 

En la actualidad, Loki agrupa las entradas de log en bloques y los comprime cuando alcanzan un tamaño determinado. Sin embargo, una vez que las líneas de logregistro entrantes se han comprimido, resulta muy difícil insertar nuevas entradas recibidas fuera de orden, concretamente si esa entrada tendría que insertarse en un bloque ya comprimido. Descomprimir, registrar y volver a comprimir resulta lento y caro.

Hemos estudiado varias formas de dar cabida a las escrituras fuera de orden, al tiempo que tratábamos de gestionar de la mejor manera posible las ventajas e inconvenientes en cuanto a rendimiento y flexibilidad de ordenación. Al final, llegamos a una solución de la que estamos muy orgullosos y que ya está disponible en la versión 2.4. En una próxima publicación del blog profundizaremos en todos los detalles de esta solución, o si le interesa puede consultar el documento de diseño.

En resumen, ha sido un placer acabar con el problema anterior y simplificar la vida de muchos usuarios de Loki al permitir que los registros se envíen sin orden a Loki.

Despliegue simple y escalable

A continuación, quisiera hablar del trabajo que hemos realizado para facilitar la ejecución de Loki. Hemos hablado durante mucho tiempo sobre lo fácil que es empezar con Loki al ejecutarlo como un único proceso capaz de consumir y servir sus logs. 

¿Pero qué sucede si quiere ejecutar Loki en una configuración de alta disponibilidad? ¿O qué pasa si quiere aprovechar la paralelización de consultas que se menciona a menudo en nuestras charlas y seminarios web? Se encontraba enseguida en los límites de lo que podía ofrecer el binario único y, probablemente, se planteaba revisar el Helm chart o fichero jsonnet que se utiliza para desplegar Loki en modo distribuido basado en microservicios. 

No me malinterprete: nos encantan los microservicios. Es la forma en que ejecutamos Loki en Grafana Labs y ofrece la mayor flexibilidad y capacidad de configuración, además del potencial para escalar a cientos de terabytes de logs por día. No obstante, también reconocemos que nuestro trabajo es hacer funcionar Loki y los microservicios son complejos. Para la mayoría de la gente, este nivel de complejidad es innecesario y una barrera para su adopción.

Esta es la razón por la que hemos dedicado un esfuerzo importante a una modalidad híbrida que denominamos despliegue simple y escalable. La idea es la siguiente: aprovechar la simplicidad de ejecutar Loki como un único binario, pero incorporar una vía sencilla hacia la alta disponibilidad y la escalabilidad.

Paso 1: Binario único

También conocido como modo monolítico, esta es la forma más fácil de empezar con Loki, y hemos realizado varias mejoras significativas en este modo de funcionamiento. En primer lugar, el modo binario único ejecuta ahora un frontend de consulta que es el componente encargado de dividir y fragmentar las consultas. ¡Ahora Loki en modo binario único también puede paralelizar las consultas!

En segundo lugar, Loki en modo binario único también puede escalarse añadiendo más instancias y conectándolas con un anillo de hash compartido. También nos hemos asegurado de que el compactador se ejecute y de que solo ejecute una de sus instancias de forma automática.

Añadir más instancias permite repartir las escrituras entrantes entre más procesos, así como proporcionar más CPU que permita una mayor paralelización de las consultas, lo que facilita el escalado de una instancia de Loki en modo binario único para obtener un mayor rendimiento y permitir un despliegue en alta disponibilidad.

Nota: No se muestra arriba el compactador que utilizará el anillo para elegir una única instancia para ejecutar las compactaciones.

Paso 2: Despliegue simple y escalable

Este modo es un punto intermedio entre la ejecución de Loki en modo monolítico/binario único y los microservicios completos. La idea es ofrecer a los usuarios más flexibilidad en el escalado y proporcionar las ventajas de separar la ruta de lectura y escritura en Loki.

Esto debería resultar especialmente atractivo para quienes deseen ejecutar Loki fuera de Kubernetes.

Funciona tomando el mismo binario/imagen y pasando un parámetro  de configuración -target=read y -target=write.

No se muestra arriba el compactador que utilizará el anillo para elegir una única instancia de lectura para ejecutar las compactaciones.

Estos nuevos parámetros de configuración dividen los componentes internos necesarios para las lecturas/escrituras en estos procesos separados, lo que hace mucho más sencillo escalar y monitorizar las rutas de lectura y escritura por separado. Además, le permiten añadir y eliminar instancias de lectura para aumentar/disminuir la cantidad de paralelismo de consulta que Loki es capaz de realizar, de modo que pueda escalar el rendimiento de lectura bajo demanda, al igual que con el modelo de microservicios.

Paso 3: Microservicios

Para aquellos que quieran lo último en flexibilidad, observabilidad y rendimiento, Loki puede seguir ejecutándose usando el modelo de microservicios, exactamente igual que antes.

Sin embargo, creo que a mucha gente le parecerá que este modo no es necesario, y que la complejidad implícita supondrá tal vez más un inconveniente que una ventaja. Dejaremos que sea usted quien decida y nos complace poder ofrecerle más opciones para ejecutar Loki de la forma que más le convenga.

Reflexiones finales

El equipo de Loki ha trabajado intensamente para hacer de la versión 2.4 la más fácil de usar hasta ahora. Estamos actualizando nuestra documentación de Grafana Loki, así que en breve pondremos a su disposición más publicaciones y ejemplos sobre la ejecución de Loki en estos diversos modos.

La forma más fácil de comenzar con Grafana Loki es Grafana Cloud, con planes gratuitos y de pago que se adaptan a cada caso práctico. Si aún no usa Grafana Cloud, regístrese gratis hoy mismo.

Tags