Un despliegue básico para probar Cortex, Loki y Tempo.
Despliega el proyecto WASAPhoto como un sandbox para probar los principales backends de observabilidad de Grafana: Cortex, Loki y Tempo. Este sandbox se divide en tres partes:
- Frontend: Aplicación web desarrollada en Vue.js que permite subir imágenes y visualizarlas. Está desplegada sobre un servidor Nginx.
- Backend: API REST desarrollada en Go que gestiona toda la lógica de la aplicación.
- Base de datos: Base de datos MySQL que almacena toda la información de los usuarios y las fotos subidas.
Nota: A pesar de que toda la información de los usuarios y las fotos subidas se almacena en una base de datos MySQL, el binario de las fotos se almacena junto con el backend.
Para ejecutar este proyecto, asegúrate de tener instalados los siguientes programas:
- Docker: Plataforma para desarrollar, enviar y ejecutar aplicaciones en contenedores.
- Docker Compose: Herramienta para definir y ejecutar aplicaciones de múltiples contenedores con Docker.
- Clona este repositorio en tu máquina local:
git clone https://github.com/aleiis/grafana-stack-validation.git
- Accede al directorio del proyecto:
cd grafana-stack-validation
- Inicia los servicios de Grafana, Cortex, Loki y Tempo:
docker-compose up -d
-
Accede a Grafana en tu navegador web: http://localhost:3003
-
Inicia sesión con las siguientes credenciales:
- Usuario: admin
- Contraseña: admin
-
Interactua con la aplicación para ver los datos obtenidos: http://localhost:9191
El proyecto está estructurado de la siguiente manera:
dashboards/
: contiene algunos dashboard para visualzar los datos de la aplicación.grafana/
: bindmount para almacenar los datos de Grafana.selenium/
: contiene los tests de Selenium para probar la aplicación.config.alloy
: configuración de Grafana Alloy para la recolección de logs de todos los contenedores de Docker.cortex-config.yaml
: configuración de Cortex.docker-compose.yaml
loki-config.yaml
: configuración de Loki.mysql-exporter-permissions.sql
: script para crear el usuario junto con los permisos necesarios para exportar métricas de MySQL con MySQL Server Exporter.otel-collector-config.yaml
: configuración de OpenTelemetry Collector.prometheus-config.yaml
: configuración de Prometheus.tempo-config.yaml
: configuración de Tempo.wasaphoto-config.yaml
: configuración de la aplicación WASAPhoto.
El proceso de recolección e ingesta de datos y de configuración se detallan en la wiki del repositorio.