Skip to content

lccarelli/observability-challenge

Repository files navigation

📦 Project Structure Overview

Este proyecto implementa un entorno de observabilidad distribuida utilizando Go, OpenTelemetry, Jaeger, Grafana + Loki, SQS (via LocalStack) y terraform para la infraestructura local.

Su objetivo es trazar el ciclo de vida de eventos entre microservicios simulados (lambda-a y lambda-b) a través de colas y observabilidad centralizada.

observability-challenge/
    ├── lambda-a/                     # Primer lambda: envía un mensaje trazado a SQS
    │   └── main.go
    ├── lambda-b/                     # Segundo lambda: consume el mensaje y continúa la traza
    │   └── main.go
    ├── tracing/                      # Inicializador global de OpenTelemetry
    │   └── tracer.go
    ├── terraform/                    # Infraestructura local simulada con Terraform y LocalStack
    │   ├── main.tf
    │   ├── variables.tf
    │   └── terraform.tfstate
    ├── docker-compose.yml           # Stack de observabilidad (Jaeger, Loki, Grafana, LocalStack)
    ├── loki-config.yaml             # Configuración de Loki
    ├── promtail-config.yaml         # Configuración de Promtail para logs locales
    ├── go.mod                       # Dependencias Go
    ├── Makefile                     # Comandos para levantar, destruir, testear y monitorear
    └── README.md                    # Documentación del proyecto (vos estás acá)


🔧 Servicios que se levantan

Servicio Tecnología Función
lambda-a Go + OpenTelemetry Simula un productor que inicia una traza y publica en SQS
lambda-b Go + OpenTelemetry Simula un consumidor que recibe el mensaje y continúa la traza
SQS LocalStack + Terraform Cola que conecta lambda-a → lambda-b
Jaeger Jaeger Docker Visualización de trazas distribuidas
Loki Grafana Loki Ingesta y consulta de logs
Grafana Grafana Docker Visualización de logs desde Loki

🧰 Tecnologías clave

  • 🔵 Lenguaje: Go 1.24.3
  • ⚙️ Tracing: OpenTelemetry v1.36.0
  • 📬 Mensajería: AWS SQS (simulada con LocalStack)
  • 📈 Trazabilidad visual: Jaeger
  • 📄 Logs estructurados: Grafana + Loki + Promtail
  • ☁️ Infraestructura como código: Terraform v1.6+

📘 Playbooks

Esta sección documenta distintos escenarios de ejecución que podés probar para validar la trazabilidad distribuida entre lambda-a y lambda-b. Cada playbook incluye comandos, qué observar en los logs y cómo se refleja en Jaeger o Grafana.


▶️ Playbook 1: Happy Path — Flujo exitoso de A → B

🧾 Descripción

Simula un request HTTP que dispara un trace en lambda-a, que luego envía un mensaje a SQS. lambda-b recibe ese mensaje, crea un nuevo span, y completa el ciclo.

🧰 Pasos

  1. Asegurate de tener los servicios corriendo:

    make observability-up
    make infra
    

Local Logs

image

Metricas Jaeger + Grafana + Loki

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published