Configuración de Loki

DockerBeginner
Practicar Ahora

Introducción

Bienvenidos a este laboratorio práctico sobre la configuración de Loki. Loki es un sistema de agregación de registros (log aggregation system) horizontalmente escalable, altamente disponible y multi-tenant, inspirado en Prometheus. Está diseñado para ser muy rentable y fácil de operar.

En este laboratorio, nos centraremos en el flujo de trabajo básico y completo para la recopilación y visualización de registros. Utilizaremos tres componentes clave:

  • Loki: El servidor principal responsable de almacenar y procesar los registros.
  • Promtail: Un agente que descubre archivos de registro locales y los envía a una instancia de Loki.
  • Grafana: Una plataforma de visualización donde nos conectaremos a Loki para explorar y consultar nuestros registros.

El entorno de este laboratorio ya ha iniciado los contenedores de Loki y Grafana por usted. Su tarea es configurar y ejecutar Promtail para enviar los registros del sistema a Loki, y luego visualizarlos en Grafana.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 87%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Descargar la Imagen Docker de Promtail para la Recolección de Registros

En este paso, descargará la imagen oficial de Docker para Promtail. Promtail es el agente responsable de descubrir archivos de registro y enviar su contenido a Loki. Lo ejecutaremos como un contenedor Docker para mantener nuestra configuración limpia y aislada.

Ejecute el siguiente comando en su terminal para descargar la imagen de Promtail desde Docker Hub.

docker pull grafana/promtail

Verá una salida que muestra el progreso de descarga para cada capa de la imagen. Una vez completada, la imagen estará disponible en su máquina local.

Using default tag: latest
latest: Pulling from grafana/promtail
Digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status: Downloaded newer image for grafana/promtail
docker.io/grafana/promtail

Ahora que tenemos la imagen, podemos proceder a crear un archivo de configuración para ella en el siguiente paso.

Crear promtail.yml para Recopilar Registros del Sistema

En este paso, creará un archivo de configuración para Promtail. Este archivo YAML le indica a Promtail dónde se encuentra el servidor Loki y qué archivos de registro debe monitorear. Todo su trabajo debe realizarse en el directorio ~/project.

Primero, cree un nuevo archivo llamado promtail.yml usando el editor nano.

nano promtail.yml

Ahora, copie y pegue la siguiente configuración en el editor nano.

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
  - job_name: varlogs
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/*.log

Analicemos esta configuración:

  • server: Configura el propio servidor web de Promtail, que no se utiliza en este laboratorio.
  • positions: Especifica un archivo donde Promtail registra la última ubicación de lectura en cada archivo de registro, para no volver a enviar registros antiguos tras un reinicio.
  • clients: Define la dirección de la instancia de Loki. Usamos http://loki:3100 porque tanto Promtail como Loki se ejecutarán en la misma red de Docker, y loki es el nombre del contenedor.
  • scrape_configs: Esta es la sección principal. Definimos un job llamado varlogs que recopila (scrape) todos los archivos que terminan en .log en el directorio /var/log/.

Después de pegar el contenido, guarde el archivo y salga de nano presionando Ctrl+X, luego Y, y finalmente Enter.

Ejecutar Contenedor de Promtail Apuntando a Loki

En este paso, iniciará el contenedor de Promtail utilizando el archivo de configuración que acaba de crear. El comando montará tanto su archivo de configuración como el directorio de registros del host dentro del contenedor.

Ejecute el siguiente comando docker run para iniciar Promtail:

docker run -d --name promtail --network monitoring-net -v $(pwd)/promtail.yml:/etc/promtail/config.yml -v /var/log:/var/log grafana/promtail -config.file=/etc/promtail/config.yml

Aquí hay una explicación de las banderas (flags) del comando:

  • -d: Ejecuta el contenedor en modo detached (separado, en segundo plano).
  • --name promtail: Asigna un nombre al contenedor para facilitar su referencia.
  • --network monitoring-net: Conecta el contenedor a la misma red que Loki y Grafana.
  • -v $(pwd)/promtail.yml:/etc/promtail/config.yml: Monta su promtail.yml local dentro del contenedor en la ubicación esperada.
  • -v /var/log:/var/log: Monta el directorio /var/log del host dentro del contenedor para que Promtail pueda leer los archivos de registro.
  • -config.file=/etc/promtail/config.yml: Indica al proceso de Promtail dentro del contenedor qué archivo de configuración debe usar.

Después de ejecutar el comando, Docker mostrará el ID único del nuevo contenedor. Puede verificar que el contenedor se está ejecutando con el comando docker ps.

docker ps

Debería ver promtail, loki y grafana en la lista de contenedores en ejecución.

CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                                       NAMES
...            grafana/promtail        "/usr/bin/promtail -c…"   A few seconds ago   Up a few seconds   0.0.0.0:9080->9080/tcp                      promtail
...            grafana/grafana         "/run.sh"                About a minute ago  Up About a minute  0.0.0.0:8080->3000/tcp                      grafana
...            grafana/loki            "/usr/bin/loki -conf…"   About a minute ago  Up About a minute  0.0.0.0:3100->3100/tcp, 9095/tcp            loki

Añadir Loki como Fuente de Datos en Grafana

En este paso, configurará Grafana para que utilice Loki como fuente de datos. Esto le permitirá consultar y visualizar los registros que Promtail está enviando a Loki.

Por favor, siga estas instrucciones cuidadosamente:

  1. Debido a la configuración del proxy inverso de la VM de LabEx, cambie a la Interfaz de Escritorio, haga clic en el navegador Firefox en la esquina superior izquierda e introduzca http://localhost:8080 en la barra de direcciones. Debería ver la página de inicio de sesión de Grafana.

  2. Inicie sesión en Grafana. Utilice el nombre de usuario admin y la contraseña admin. Es posible que se le pida cambiar la contraseña; puede omitir esto para el laboratorio.

  3. En el menú de la izquierda, haga clic en el icono Connections (Conexiones, parece un enchufe o conector).

  4. En la página de Conexiones, haga clic en Data sources (Fuentes de datos).

  5. En la página de Fuentes de datos, haga clic en el botón Add new data source (Añadir nueva fuente de datos).

  6. De la lista de tipos de fuentes de datos disponibles, seleccione Loki.

  7. En el cuadro de búsqueda, escriba Loki y haga clic en la opción de fuente de datos Loki que aparece.

  8. Será dirigido a la página de configuración de la fuente de datos Loki. En el campo URL bajo la sección HTTP, introduzca la siguiente dirección:

    http://loki:3100

    Usamos loki como nombre de host porque los contenedores de Grafana y Loki están en la misma red de Docker (monitoring-net), y Docker proporciona resolución DNS entre contenedores en la misma red.

  9. Desplácese hasta el final y haga clic en el botón Save & test (Guardar y probar).

Add Loki as Data Source in Grafana

Si todo está configurado correctamente, verá una pancarta verde con el mensaje "Data source is working" (La fuente de datos está funcionando). Ahora ha conectado exitosamente Grafana a su instancia de Loki.

Consultar Registros Básicos en la Vista Explore de Grafana

En este paso final, utilizará la vista "Explore" (Explorar) de Grafana para ejecutar una consulta simple y ver los registros que Promtail está enviando desde su entorno.

  1. En la interfaz de usuario (UI) de Grafana, navegue a la barra lateral izquierda y haga clic en el icono de la brújula (Explore).

  2. En la parte superior izquierda de la página Explore, verá un menú desplegable para seleccionar la fuente de datos. Si aún no está seleccionada, elija Loki.

  3. Verá un campo de entrada llamado "Log browser" (Explorador de registros). Aquí es donde escribe sus consultas LogQL.

  4. Haga clic en el botón "Code" para cambiar al editor de código.

  5. Introduzca la siguiente consulta en el campo de entrada:

    {job="varlogs"}

    Esta consulta LogQL selecciona todos los streams de registros que tienen la etiqueta (label) job con el valor varlogs. Definimos esta etiqueta en nuestro archivo promtail.yml.

  6. Presione Shift+Enter o haga clic en el botón azul Run query (Ejecutar consulta) en el lado derecho de la pantalla.

Query Basic Logs in Grafana Explore View

Después de ejecutar la consulta, debería ver aparecer líneas de registro en el panel principal debajo del editor de consultas. Verá registros de varios archivos en /var/log. Esto confirma que Promtail está extrayendo (scraping) registros con éxito y enviándolos a Loki, y que Grafana puede consultarlos.

Resumen

¡Felicidades! Ha configurado con éxito un pipeline (tubería) básico de registro utilizando Loki, Promtail y Grafana.

En este laboratorio, ha aprendido a:

  • Extraer y ejecutar contenedores Docker para herramientas de procesamiento de registros como Promtail.
  • Crear un archivo de configuración de Promtail para especificar un servidor Loki y definir trabajos de extracción de registros (log scraping jobs).
  • Utilizar el networking (redes) de Docker para conectar servicios (Promtail, Loki y Grafana).
  • Añadir Loki como fuente de datos dentro de la interfaz de usuario de Grafana.
  • Ejecutar una consulta LogQL básica en la vista Explore de Grafana para encontrar e inspeccionar sus registros.

Esta configuración es la base de un sistema de agregación de registros potente, escalable y rentable. A partir de aquí, podría explorar consultas LogQL más avanzadas, el análisis sintáctico de registros (log parsing) y la configuración de alertas en Grafana basadas en el contenido de los registros.