Introducción a Grafana Loki

Publicado: 2021-05-01

Aprendamos los fundamentos de Grafana Loki, un sistema de agregación de registros de múltiples inquilinos.

En un entorno de producción, el tiempo de inactividad es inaceptable. Puede provocar una pérdida masiva de ingresos y reputación empresarial. Pero si tiene un sistema de registro y monitoreo adecuado, sabrá cómo depurar esos escenarios, que conducen a tiempos de inactividad.

Ayuda a ahorrar costos e identificar problemas que podrían ocurrir en el futuro.

Hoy en día, cada tamaño de una organización utiliza principios y herramientas de DevOps. Los contenedores y Kubernetes son los más populares. Y la supervisión de dicho sistema se realiza de forma muy eficaz con Prometheus. Pero donde Prometheus se queda atrás es en la parte de tala. No proporciona un sistema de registro centralizado, y aquí es donde Loki entra en escena.

¿Qué es Grafana Loki?

Grafana Loki es un sistema de agregación de registros de múltiples inquilinos iniciado por Grafana en 2018 y lanzado bajo la licencia Apache 2.0. Este sistema fue desarrollado inspirándose en Prometheus. Se usa principalmente con proveedores en la nube y con herramientas como Prometheus y Grafana.

Loki es similar a la pila ELK / EFK, pero es más fácil de configurar y operar con mejores funcionalidades. Loki no indexa el contenido del registro, sino que indexa las marcas de tiempo y un conjunto de etiquetas para un flujo de registro. Hace que el índice sea más pequeño, lo que simplifica las operaciones y eventualmente reduce el costo.

Beneficios de Loki

A continuación se muestran los beneficios de usar Loki en su pila:

  • Al indexar solo metadatos, Loki es muy rentable. La ejecución de índices para el procesamiento de texto completo requiere instancias de RAM más grandes que son muy caras. El almacenamiento de registros en una tienda de objetos como S3 también lo hace muy económico.
  • Es compatible con la tenencia múltiple mediante el uso de tenantID, por lo que los inquilinos tienen sus datos almacenados por separado.
  • Puede ejecutar Loki localmente para operaciones a pequeña escala o escalarlo fácilmente horizontalmente para operaciones a gran escala.
  • Utiliza el estilo dínamo para garantizar la coherencia del quórum para las operaciones de lectura y escritura.
  • Está configurado de forma predeterminada para tener 3 réplicas de registros para enfrentar el riesgo de bloqueos del proceso y salidas abruptas donde se pierden los registros. Sí, incurriría en un gasto adicional, pero no tan alto, la integridad de los datos es más crítica.
  • Fácil de conectar con herramientas populares como Kubernetes, Prometheus y visualización en Grafana.

Arquitectura Loki

arquitectura loki - geekflare

La arquitectura de Loki tiene tres componentes: Promtail , Loki y Grafana .

Promtail es un agente que debe instalarse en cada nodo que ejecuta sus aplicaciones o servicios. La responsabilidad principal de Promtail es descubrir el objetivo, adjuntar las etiquetas a los flujos de lo que provienen de los pods y enviar esos registros a las instancias de Loki. El agente promtail sigue los registros del sistema de archivos local y envía los registros al servidor central de Loki. Después de esto, puede consultar sus registros usando Grafana.

Casos de uso de Loki

A continuación se muestran los casos de uso populares para usar un sistema de registro como Loki.

  • Inteligencia empresarial: este es un caso de uso imperecedero, la creación de información procesable a partir de los datos de registro siempre puede ser muy útil. Loki puede ayudarlo a comprender los datos de registro y hacerlo capaz de crear nuevas estrategias para el crecimiento empresarial. Por ejemplo, a través de los datos de registro de una organización, puede ayudarlo a conocer las tasas de conversión de un canal publicitario.
  • Monitoreo: Prometheus se usa mucho en la industria para monitorear. Pero puede identificar muchas cosas al monitorear sus registros con herramientas como Loki. Puede ayudarlo a monitorear las tasas de error en su sitio web revisando los registros y enviando alertas una vez que se cruza el umbral.
  • Depuración y resolución de problemas: Loki puede ayudar al equipo de DevOps con algunas respuestas rápidas, como cuándo se bloqueó la aplicación, el motivo del bloqueo, su último estado antes de bloquearse, etc.
  • Ciberseguridad: En los últimos años, los ciberataques a portales de comercio electrónico se han incrementado exponencialmente. Con la ayuda de Loki, puede verificar los registros para identificar cualquier amenaza, problema o actividad maliciosa que ocurra en el sistema de su organización. Si el hackeo tuvo éxito, Loki aún podría ser útil para que el equipo forense comprenda en detalle lo que sucedió en el sistema. Les ayudará a rastrear a los piratas informáticos.
  • Cumplimiento: Para cumplir con las regulaciones de la industria, las organizaciones deben mantener sus registros de auditoría hasta por 7 años. Las autoridades locales pueden auditar los registros en cualquier momento. Loki puede almacenar sus registros de auditoría de forma segura.

Instalación de Loki y Promtail

Descubramos rápidamente cómo instalar y visualizar registros en Grafana. En esta demostración, usaré la configuración genérica que raspará los registros de /var/log/*log

Vaya a la página de lanzamientos de Loki, desplácese hacia abajo hasta Activos, aquí encontrará varios paquetes de Loki y Promtail. Descargue el paquete de Loki según el sistema que esté utilizando. No descargue paquetes cli o canary Loki. Estoy descargando loki-linux-amd64.zip y promtail-linux-amd64.zip para mi sistema Ubuntu.

Una vez finalizada la descarga, extraiga los archivos de Loki y Promtail y colóquelos en un solo directorio.

 [email protected]:~$ mkdir loki [email protected]:~$ mv loki-linux-amd64 promtail-linux-amd64 loki [email protected]:~$ cd loki/ [email protected]:~/loki$ ls loki-linux-amd64 promtail-linux-amd64

Ahora, descargue el archivo de configuración genérico de Loki y Promtail.

 [email protected]:~/loki$ wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml --2021-04-30 12:00:51-- https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ... Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1832 (1.8K) [text/plain] Saving to: 'loki-local-config.yaml' loki-local-config.yaml 100%[===============================================================================================>] 1.79K --.-KB/s in 0s 2021-04-30 12:00:51 (16.6 MB/s) - 'loki-local-config.yaml' saved [1832/1832]
 [email protected]:~/loki$ wget https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml --2021-04-30 12:05:07-- https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml Resolving github.com (github.com)... 13.234.210.38 Connecting to github.com (github.com)|13.234.210.38|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'promtail-local-config.yaml' promtail-local-config.yaml [ <=> ] 109.16K --.-KB/s in 0.002s 2021-04-30 12:05:08 (66.8 MB/s) - 'promtail-local-config.yaml' saved [111779]
 [email protected]:~/loki$ ls loki-linux-amd64 loki-local-config.yaml promtail-linux-amd64 promtail-local-config.yaml

Para iniciar Loki, ejecute el siguiente comando con el archivo de configuración de Loki. Esto iniciará Loki y mostrará los registros de Loki en la terminal.

 [email protected]:~/loki$ ./loki-linux-amd64 -config.file=loki-local-config.yaml level=info ts=2021-04-30T16:08:37.990311491Z caller=main.go:130 msg="Starting Loki" version="(version=2.2.1, branch=HEAD, revision=babea82e)" level=info ts=2021-04-30T16:08:37.990856871Z caller=server.go:229 http=[::]:3100 grpc=[::]:9096 msg="server listening on addresses" level=info ts=2021-04-30T16:08:37.991613443Z caller=shipper_index_client.go:100 msg="starting boltdb shipper in 0 mode" level=info ts=2021-04-30T16:08:37.992568288Z caller=mapper.go:38 msg="cleaning up mapped rules directory" path=/tmp/loki/rules-temp level=error ts=2021-04-30T16:08:37.992623632Z caller=mapper.go:42 msg="unable to read rules directory" path=/tmp/loki/rules-temp err="open /tmp/loki/rules-temp: no such file or directory" level=info ts=2021-04-30T16:08:37.993520927Z caller=table_manager.go:171 msg="uploading tables" level=info ts=2021-04-30T16:08:37.993941099Z caller=module_service.go:59 msg=initialising module=store level=info ts=2021-04-30T16:08:37.994011839Z caller=module_service.go:59 msg=initialising module=memberlist-kv level=info ts=2021-04-30T16:08:37.99412775Z caller=module_service.go:59 msg=initialising module=server level=info ts=2021-04-30T16:08:37.994379648Z caller=module_service.go:59 msg=initialising module=ingester level=info ts=2021-04-30T16:08:37.994415984Z caller=ingester.go:241 msg="recovering from checkpoint"

Para iniciar Promtail, ejecute el siguiente comando con el archivo de configuración de Promtail. Se requiere Promtail para llevar los registros a Loki.

 [email protected]:~/loki$ ./promtail-linux-amd64 -config.file=promtail-local-config.yaml level=info ts=2021-04-30T16:35:52.775998059Z caller=server.go:229 http=[::]:9080 grpc=[::]:42557 msg="server listening on addresses" level=info ts=2021-04-30T16:35:52.776283661Z caller=main.go:112 msg="Starting Promtail" version="(version=2.2.1, branch=HEAD, revision=babea82e)" level=info ts=2021-04-30T16:35:57.776226323Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}" ts=2021-04-30T16:35:57.776902427Z caller=log.go:124 level=info msg="Seeked /var/log/fontconfig.log - &{Offset:11055 Whence:0}" level=info ts=2021-04-30T16:35:57.776983546Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/auth.log level=info ts=2021-04-30T16:35:57.777009023Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/fontconfig.log ts=2021-04-30T16:35:57.777094698Z caller=log.go:124 level=info msg="Seeked /var/log/lastlog - &{Offset:0 Whence:0}" ts=2021-04-30T16:35:57.777712594Z caller=log.go:124 level=info msg="Seeked /var/log/apport.log - &{Offset:0 Whence:0}" ts=2021-04-30T16:35:57.778200383Z caller=log.go:124 level=info msg="Seeked /var/log/alternatives.log - &{Offset:456 Whence:0}" ts=2021-04-30T16:35:57.780467419Z caller=log.go:124 level=info msg="Seeked /var/log/syslog - &{Offset:56911 Whence:0}" level=info ts=2021-04-30T16:35:57.780646032Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/kern.log level=info ts=2021-04-30T16:35:57.781289004Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}" level=info ts=2021-04-30T16:35:57.787770104Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/grafana/grafana.log ts=2021-04-30T16:35:57.782276009Z caller=log.go:124 level=info msg="Seeked /var/log/grafana/grafana.log - &{Offset:0 Whence:0}"

Visualice Log usando Loki y Grafana

Grafana proporciona soporte integrado para Loki. Loki ya está presente en las fuentes de datos de Grafana.

Paso 1: Vaya a Configuraciones de Grafana y haga clic en "Fuentes de datos".

grafana

Paso 2: en Fuentes de datos, puede buscar la fuente por nombre o tipo.

configuración

Paso 3: busca por el nombre Loki. Puede ver que esta fuente de datos ya está presente en Grafana. Haga clic en Seleccionar.

añadir loki

Paso 4: Ingrese el nombre que desea darle a la fuente de datos y ponga http://localhost:3100 (cambie esto a la IP del servidor si Loki se está ejecutando en un servidor diferente a Grafana) en la URL porque hemos iniciado Loki en el puerto 3100.

fuente de datos loki

Haga clic en el botón Probar y guardar en la parte inferior. Si ha realizado la configuración de Loki correctamente, obtendrá el siguiente mensaje que se muestra en un cuadro verde.

guardar y probar

Paso 5: Haga clic en la pestaña Explorar en el lado izquierdo. Seleccione Loki en el menú desplegable de selección de fuente de datos. Ahora, me gustaría visualizar la actividad de los registros de Grafana. Para hacer esto, debe agregar la consulta {nombre de archivo = ”/ var / log / grafana / grafana.log”} en el navegador de registros. Las barras verdes a continuación son entradas de eventos en el archivo de registro.

registro de grafana

Puede seleccionar el intervalo de tiempo para el que desea que aparezca la visualización en el tablero, y también puede establecer el intervalo de actualización de la consulta, después del cual la consulta se ejecutará nuevamente. Para ver más detalles de los registros, desplácese hacia abajo y haga clic en una de las entradas del registro, le dará todo tipo de información relacionada con el registro.

registro de detalle

Se ve hermoso, ¿no?

Entonces, todo se trataba de comenzar. Le recomiendo encarecidamente que consulte el siguiente video del seminario web que explica la observabilidad con Loki.

Conclusión

Un sistema distribuido se compone de muchas aplicaciones o microservicios, cada uno con toneladas de registros. Necesitaría una forma rentable de recopilar los registros, almacenarlos y luego hacer uso de ellos. Loki es una solución perfecta para tales casos. De hecho, puede reducir alrededor del 75% de sus costos de registro y monitoreo integrando Loki en su entorno de producción.

Loki también está disponible a través de Grafana Cloud, sería bueno probarlo si no desea pasar por el proceso de instalación.

A continuación, conozca Grafana Tempo.