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.
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. Usamoshttp://loki:3100porque tanto Promtail como Loki se ejecutarán en la misma red de Docker, ylokies el nombre del contenedor.scrape_configs: Esta es la sección principal. Definimos unjobllamadovarlogsque recopila (scrape) todos los archivos que terminan en.logen 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 supromtail.ymllocal dentro del contenedor en la ubicación esperada.-v /var/log:/var/log: Monta el directorio/var/logdel 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:
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:8080en la barra de direcciones. Debería ver la página de inicio de sesión de Grafana.Inicie sesión en Grafana. Utilice el nombre de usuario
adminy la contraseñaadmin. Es posible que se le pida cambiar la contraseña; puede omitir esto para el laboratorio.En el menú de la izquierda, haga clic en el icono Connections (Conexiones, parece un enchufe o conector).
En la página de Conexiones, haga clic en Data sources (Fuentes de datos).
En la página de Fuentes de datos, haga clic en el botón Add new data source (Añadir nueva fuente de datos).
De la lista de tipos de fuentes de datos disponibles, seleccione Loki.
En el cuadro de búsqueda, escriba
Lokiy haga clic en la opción de fuente de datos Loki que aparece.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:3100Usamos
lokicomo 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.Desplácese hasta el final y haga clic en el botón Save & test (Guardar y probar).

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.
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).
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.
Verá un campo de entrada llamado "Log browser" (Explorador de registros). Aquí es donde escribe sus consultas LogQL.
Haga clic en el botón "Code" para cambiar al editor de código.
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)jobcon el valorvarlogs. Definimos esta etiqueta en nuestro archivopromtail.yml.Presione Shift+Enter o haga clic en el botón azul Run query (Ejecutar consulta) en el lado derecho de la pantalla.

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.



