La corrección está integrada en el TP (Ver los recuadros verdes)
Lo que vas a aprender en este TP
- Leer archivos de logs
- Extraer y añadir etiquetas
- Enviar a Loki y comprobar
Introducción #
Lo que vas a aprender en esta sección
- Leer archivos de logs
- Extraer y añadir etiquetas
- Enviar a Loki y comprobar
Contexto. Una aplicación escribe sus logs JSON en archivos y nadie los consulta hasta el incidente. Los centralizas en Loki.
Requisitos: Docker Compose, curl · Duración estimada: 30 min
Pipeline de logs #
Pasos guiados, con su corrección.
1. Preparar la pila
¿Por qué? El volumen conserva las posiciones de lectura: sin él, Alloy lo releería todo en cada reinicio.
Escribe un Compose con Loki y Alloy.Ver la corrección
services: loki: image: grafana/loki:latest command: -config.file=/etc/loki/local-config.yaml ports: - "3100:3100" alloy: image: grafana/alloy:v1.21.3 command: run --server.http.listen-addr=0.0.0.0:12345 --storage.path=/var/lib/alloy/data /etc/alloy/config.alloy ports: - "12345:12345" volumes: - ./config.alloy:/etc/alloy/config.alloy:ro - ./logs:/var/log/myapp:ro - alloy-data:/var/lib/alloy/data depends_on: [loki] volumes: alloy-data:2. Leer los archivos
¿Por qué?
Enlocal.file_matchencuentra los archivos,loki.source.filelos lee y memoriza su posición.config.alloy, lee/var/log/myapp/*.logcon la etiquetajob=myapp.Ver la corrección
local.file_match "app" { path_targets = [{ "__path__" = "/var/log/myapp/*.log", "job" = "myapp" }] } loki.source.file "app_logs" { targets = local.file_match.app.targets forward_to = [loki.process.app.receiver] }3. Procesar las líneas
¿Por qué?
Extraestage.labelstoma un valor extraído; un valor fijo requierestage.static_labels.leveldel JSON para convertirlo en etiqueta, añadeenv=productiony conservamsgcomo texto.Ver la corrección
loki.process "app" { forward_to = [loki.write.local_loki.receiver] stage.json { expressions = { level = "", msg = "" } } stage.labels { values = { level = "" } } stage.static_labels { values = { env = "production" } } stage.output { source = "msg" } }4. Enviar a Loki
¿Por qué? En la red de Compose, a Loki se llega por su nombre de servicio.
Añade el componente de envío.Ver la corrección
loki.write "local_loki" { endpoint { url = "http://loki:3100/loki/api/v1/push" } }5. Comprobar
¿Por qué? Un componente
Crea un archivo de logs, inicia la pila y consulta Loki: debes ver las etiquetashealthyno demuestra que lleguen los datos.envylevel, y los textospaiement refuséycommande créée.Ver la corrección
mkdir -p logs cat >> logs/app.log <<'EOF' {"level":"error","msg":"paiement refusé"} {"level":"info","msg":"commande créée"} EOF docker compose up -d sleep 20 curl -s http://localhost:3100/loki/api/v1/labels curl -s -G http://localhost:3100/loki/api/v1/query_range \ --data-urlencode 'query={job="myapp",env="production"}' \ --data-urlencode "start=$(( $(date +%s)-600 ))000000000"
Nivel de dificultad : ●●○○○ (2/5)
Mi seguimiento
Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión
Glossaire de la formation
Observabilidad
La capacidad de conocer el estado interno de un sistema a partir de los datos que emite.Estos datos se clasifican en 3 pilares: logs (registros)métric...
Trazas distribuidas
Técnica (proveniente del pilar de Trazas) que permite seguir el recorrido completo de una solicitud a través de múltiples microservicios para identifi...
Métricas
Medidas numéricas recopiladas a intervalos regulares (ej: CPU, RAM, tiempo de respuesta) utilizadas para evaluar el estado de salud general de un sist...
Perfilado continuo (Continuous Profiling)
Análisis constante de la ejecución de código en producción para identificar con precisión qué líneas de código o funciones consumen más recursos (CPU,...
Access Log (Registro de acceso)
Archivo de registro que guarda las solicitudes procesadas por un servidor web (Apache, Nginx, Lighttpd, etc.). Permite rastrear la actividad del servi...
Client IP (IP del Cliente)
La dirección IP del usuario que realiza la solicitud hacia el servidor web. Cuando un usuario pasa por un Load Balancer o un proxy (ej: Cloudflare), l...
Timestamp (Marca de tiempo)
La fecha y la hora exactas en las que el servidor recibió la solicitud.Configuración: %t en Apache, $time_local o $time_iso8601 en Nginx.
Request (Solicitud)
La línea de solicitud inicial del cliente. Generalmente incluye el método HTTP (ej: GET), la URL solicitada y la versión del protocolo HTTP.Configurac...
Status Code (Código de estado)
El código de estado HTTP final devuelto por el servidor al cliente (ej: 200 para un éxito, 404 para recurso no encontrado).Configuración: %>s en Apach...
Size (Tamaño)
El volumen de datos devuelto al cliente, medido en bytes (generalmente sin los encabezados HTTP).Configuración: %b u %O en Apache, $body_bytes_sent en...
Referrer (Referente)
La URL de la página web desde la que el cliente hizo clic o siguió un enlace para acceder al recurso actual.Configuración: %{Referer}i en Apache, $htt...
User-Agent
La información de identificación proporcionada por el cliente sobre su navegador, su sistema operativo y su dispositivo. Su estructura estándar a menu...
Response Time (Tiempo de respuesta)
El tiempo total que tarda el servidor en procesar la solicitud y devolver la respuesta al cliente.Configuración: %D (microsegundos) o %T (segundos) en...
Artículos recomendados
Grafana Alloy et les logs : collecter et envoyer vers Loki
Découvrez comment configurer Grafana Alloy pour lire des fichiers de logs, journald ou des flux r...
La stack LGTM (Loki, Grafana, Tempo, Mimir) : architecture et mise en place
Comprendre la stack LGTM de Grafana Labs : Loki pour les logs, Grafana pour la visualisation, Tem...
Référence des Composants Grafana Alloy
Un guide de référence complet sur tous les composants disponibles dans Grafana Alloy, organisé pa...
Collecter des logs vers Loki : Alloy, Promtail, Docker et OpenTelemetry
Envoyer des logs vers Loki : Grafana Alloy, Promtail, driver Docker, OTLP, bons labels, parsing e...
Grafana Alloy : Collecte et Transformation de Télémétrie
Apprenez à utiliser Grafana Alloy pour collecter, transformer et acheminer logs, métriques et tra...
Grafana Loki : le système de logs inspiré de Prometheus
Découvrir Grafana Loki : philosophie d'indexation par labels, architecture (distributor, ingester...
Alerter sur les logs avec le Ruler de Loki
Mettre en place des alertes et des recording rules LogQL avec le Ruler Loki : configuration, fich...
Corréler traces, logs, métriques et profils dans Grafana
Relier Tempo aux logs (Loki), aux métriques (Prometheus) et aux profils (Pyroscope) : tracesToLog...
Grafana Alloy : Guide complet pour collecter métriques, logs et traces
Tutoriel complet sur Grafana Alloy. Découvrez comment installer, configurer et utiliser ce collec...