Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Computación en nube y DevOps Última actualización: 25 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Conozcamos los fundamentos de Grafana Loki, un sistema de agregación de registros multi-tenant.

En un entorno de producción, el tiempo de inactividad es inaceptable. Puede suponer una pérdida masiva de ingresos y reputación empresarial. Pero si dispone de un sistema de registro y monitorización adecuado, sabrá cómo depurar esos escenarios que provocan el tiempo de inactividad.

Ayuda a ahorrar costes y a identificar los problemas que podrían producirse en el futuro.

Hoy en día, las organizaciones de todos los tamaños utilizan principios y herramientas DevOps. Los contenedores y Kubernetes son los más populares. Y la monitorización de un sistema de este tipo se realiza de forma muy eficiente con Prometeo. Pero donde Prometheus se queda atrás es en la parte de registro. No proporciona un sistema de registro centralizado, y aquí es donde Loki entra en escena.

¿Qué es Grafana Loki?

Grafana L oki es un sistema de agregación de registros multi-tenant iniciado por Grafana en 2018 y liberado bajo la licencia Apache 2.0. Este sistema fue desarrollado inspirándose en Prometheus. Se utiliza 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 marcas de tiempo y un conjunto de etiquetas para un flujo de registro. Esto hace que el índice sea más pequeño, lo que simplifica las operaciones y, a la larga, reduce el coste.

Ventajas de Loki

A continuación se enumeran los beneficios de utilizar Loki en su pila:

  • Al indexar sólo metadatos, Loki es muy rentable. Ejecutar índices para el procesamiento de texto completo requiere instancias de RAM más grandes que son muy caras. Almacenar los registros en objetos almacenados como S3 también lo hace muy económico.
  • Soporta multi-tenancy 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 horizontalmente con facilidad para operaciones a gran escala.
  • Utiliza el estilo dinamo para garantizar la coherencia del quórum en las operaciones de lectura y escritura.
  • Está configurado por defecto para tener 3 réplicas de registros para hacer frente al riesgo de caídas de procesos y salidas abruptas en las que se pierden los registros. Sí, supondría algún gasto extra pero no tan elevado, 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 Loki tiene tres componentes: Promtail, Loki y Grafana.

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

Casos de uso de Loki

A continuación se muestran los casos de uso más populares para utilizar un sistema de registro como Loki.

  • Inteligencia empresarial: Este es un caso de uso perenne, crear una visión procesable a partir de los datos de registro siempre puede ser muy útil. Loki puede ayudar a comprender los datos de registro y hacerle capaz de crear nuevas estrategias para el crecimiento del negocio. Por ejemplo, a través de los datos de registro de una organización, puede ayudarle a conocer las tasas de conversión de un canal publicitario.
  • Monitorización: Prometheus se utiliza mucho en la industria para la monitorización. Pero puede identificar muchas cosas monitorizando sus logs con herramientas como Loki. Puede ayudarle a controlar las tasas de error de 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, la razón de su bloqueo, su último estado antes de bloquearse, etc.
  • Ciberseguridad: En los últimos años, los ciberataques a portales de comercio electrónico han aumentado exponencialmente. Con la ayuda de Loki, puede comprobar los registros para identificar cualquier amenaza o problema, o actividad maliciosa que se esté produciendo en el sistema de su organización. Si el pirateo tuvo éxito, Loki puede seguir siendo útil para que el equipo forense comprenda con detalle lo que ocurrió en el sistema. Les ayudará a rastrear a los piratas informáticos.
  • Cumplimiento: Para cumplir con las normativas del sector, las organizaciones deben conservar sus registros de auditoría durante un máximo de 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

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

Vaya a la página de versiones de Loki, desplácese hacia abajo hasta Activos, aquí encontrará varios paquetes de Loki y Promtail. Descargue el paquete Loki según el sistema que esté utilizando. No descargue los paquetes Loki cli o canary. Yo 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 único directorio.

geekflare@geekflare:~$ mkdir loki
geekflare@geekflare:~$ mv loki-linux-amd64 promtail-linux-amd64 loki
geekflare@geekflare:~$ cd loki/
geekflare@geekflare:~/loki$ ls
loki-linux-amd64 promtail-linux-amd64

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

geekflare@geekflare:~/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
Resolviendo raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ...
Conectando con raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... conectado.
Solicitud HTTP enviada, esperando respuesta... 200 OK
Longitud: 1832 (1.8K) [text/plain]
Guardando en: ‘loki-local-config.yaml’

loki-local-config.yaml 100%[===============================================================================================>] 1.79K --.-KB/s en 0s

2021-04-30 12:00:51 (16.6 MB/s) - 'loki-local-config.yaml' guardado [1832/1832]
geekflare@geekflare:~/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
Resolviendo github.com (github.com)... 13.234.210.38
Conectando con github.com (github.com)|13.234.210.38|:443... conectado.
Solicitud HTTP enviada, esperando respuesta... 200 OK
Longitud: sin especificar [text/html]
Guardando en: 'promtail-local-config.yaml'

promtail-local-config.yaml [ <=> ] 109.16K --.-KB/s en 0.002s 

2021-04-30 12:05:08 (66.8 MB/s) - 'promtail-local-config.yaml' guardado [111779]
geekflare@geekflare:~/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 el terminal.

geekflare@geekflare:~/loki$ ./loki-linux-amd64 -config.file=loki-local-config.yaml
level=info ts=2021-04-30T16:08:37.990311491Z caller=main.go:130 msg="Iniciando Loki" version="(version=2.2.1, branch=HEAD, revision=babea82e)"
level=info ts=2021-04-30T16:08:37.990856871Z caller=servidor.go:229 http=[::]:3100 grpc=[::]:9096 msg="servidor escuchando en direcciones"
level=info ts=2021-04-30T16:08:37.991613443Z caller=shipper_index_client.go:100 msg="iniciando boltdb shipper en modo 0"
level=info ts=2021-04-30T16:08:37.992568288Z caller=mapper.go:38 msg="limpiando directorio de reglas mapeadas" path=/tmp/loki/rules-temp
level=error ts=2021-04-30T16:08:37.992623632Z caller=mapper.go:42 msg="no se puede leer el directorio rules" 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="cargando tablas"
level=info ts=2021-04-30T16:08:37.993941099Z caller=module_service.go:59 msg=inicializando module=store
level=info ts=2021-04-30T16:08:37.994011839Z caller=module_service.go:59 msg=inicializando modulo=memberlist-kv
level=info ts=2021-04-30T16:08:37.99412775Z caller=module_service.go:59 msg=inicializando modulo=servidor
level=info ts=2021-04-30T16:08:37.994379648Z caller=module_service.go:59 msg=inicializando module=ingester
level=info ts=2021-04-30T16:08:37.994415984Z caller=ingester.go:241 msg="recuperando del punto de control"

Para iniciar Promtail, ejecute el siguiente comando con el archivo de configuración de Promtail. Promtail es necesario para obtener los registros en Loki.

geekflare@geekflare:~/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="servidor escuchando en direcciones"
level=info ts=2021-04-30T16:35:52.776283661Z caller=main.go:112 msg="Iniciando Promtail" version="(version=2.2.1, branch=HEAD, revision=babea82e)"
level=info ts=2021-04-30T16:35:57.776226323Z caller=filetargetmanager.go:254 msg="Añadiendo objetivo" key="{job="varlogs\"}"
ts=2021-04-30T16:35:57.776902427Z caller=log.go:124 level=info msg="Buscado /var/log/fontconfig.log - &{Offset:11055 Whence:0}"
level=info ts=2021-04-30T16:35:57.776983546Z caller=tailer.go:125 component=tailer msg="rutina tail: iniciada" path=/var/log/auth.log
level=info ts=2021-04-30T16:35:57.777009023Z caller=tailer.go:125 component=tailer msg="rutina tail: iniciada" path=/var/log/fontconfig.log
ts=2021-04-30T16:35:57.777094698Z caller=log.go:124 level=info msg="Buscada /var/log/lastlog - &{Offset:0 Whence:0}"
ts=2021-04-30T16:35:57.777712594Z caller=log.go:124 level=info msg="Buscada /var/log/apport.log - &{Offset:0 Whence:0}"
ts=2021-04-30T16:35:57.778200383Z caller=log.go:124 level=info msg="Se ha buscado /var/log/alternatives.log - &{Offset:456 Whence:0}"
ts=2021-04-30T16:35:57.780467419Z caller=log.go:124 level=info msg="Se ha buscado /var/log/syslog - &{Offset:56911 Whence:0}"
level=info ts=2021-04-30T16:35:57.780646032Z caller=log.go:124 level=info msg="Se ha buscado /var/log/syslog - &{Offset:56911 Whence:0}" level=info ts=2021-04-30T16:35:57.780646032Z caller=tailer.go:125 component=tailer msg="Rutina tail: iniciada" path=/var/log/kern.log
level=info ts=2021-04-30T16:35:57.781289004Z caller=filetargetmanager.go:254 msg="Añadiendo objetivo" key="{job=\"varlogs\"}"
level=info ts=2021-04-30T16:35:57.787770104Z caller=tailer.go:125 component=tailer msg="Rutina tail: iniciada" path=/var/log/grafana/grafana.log
ts=2021-04-30T16:35:57.782276009Z caller=log.go:124 level=info msg="Buscado /var/log/grafana/grafana.log - &{Offset:0 Whence:0}"

Visualizar 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: Busque por el nombre Loki. Puede ver que esta fuente de datos ya está presente en Grafana. Haga clic en Seleccionar.

añadir loki

Paso4: Introduzca el nombre que desea dar a la fuente de datos y ponga http://localhost:3100 (cámbielo por IP del servidor si Loki se ejecuta en un servidor diferente al de 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 mostrado en un recuadro verde.

guardar y probar

Paso 5: Haga clic en la pestaña Explorar de la parte izquierda. Seleccione Loki en el desplegable de selección de fuente de datos. Ahora, me gustaría visualizar la actividad de los registros de Grafana. Para ello, debe añadir la consulta <em>{filename="/var/log/grafana/grafana.log"}</em> en el Navegador de registros. Las barras verdes de abajo 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 cuadro de mandos, y también puede establecer el intervalo de actualización de la consulta, tras el cual ésta se ejecutará de nuevo. 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 detallado

Queda precioso, ¿verdad?

Así que eso fue todo para empezar. Le aconsejo encarecidamente que eche un vistazo al siguiente vídeo del seminario web en el que se explica la observabilidad con Loki.

Conclusión

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

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

A continuación, conozca Grafana Tempo.

  • Avi
    Autor
    Avi es un entusiasta de la tecnología con experiencia en tecnologías de tendencia como DevOps, Cloud Computing, Big Data y muchas más. Le apasiona aprender tecnologías de vanguardia y compartir sus conocimientos con los demás a través de... Seguir leyendo
Gracias a nuestros patrocinadores
Más lecturas sobre computación en nube
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder