Tool
Dashboard Metrics Manager
Node.js 20TypeScriptReact 18ViteDockerNginxRechartsExpressshadcn/uiTanStack Query v5
rcampos09/dashborad-metrics-manager-gatling
El problema que resuelve
📊
Histórico de métricas
🔔
Alertas automáticas
🔗
Trazabilidad total
Stack técnico
| Capa | Tecnología | Rol |
|---|---|---|
| Backend | Node.js 20 + TypeScript | Runtime y lenguaje del servidor REST |
| Express | API REST para subida de archivos, CRUD y webhooks | |
| Cheerio | Extrae métricas (p50/p95/p99, RPS, error rate) del HTML de Gatling | |
| lowdb + adm-zip/tar | Persistencia JSON + extracción de archivos .zip/.tar.gz | |
| Frontend | React 18 + TypeScript + Vite | SPA que consume la API REST del backend |
| Recharts | Gráficos de línea temporal de p95/p99/RPS con líneas de SLA | |
| Tailwind CSS + shadcn/ui | Diseño de la interfaz — tablas, filtros, diálogos de comparación | |
| TanStack Query v5 | Gestión de estado del servidor — cache, refetch y mutaciones | |
| Infra | Docker + Docker Compose | Orquesta backend, frontend y Nginx en un solo comando |
| Nginx | Proxy reverso del frontend — límite de subida: 500 MB |
Instalación — un comando
Importar un reporte de Gatling
Terminal — comprimir y subir reporte curl + multipart/form-data
# 1. Ir al directorio de resultados de Gatling
cd your-gatling-project/target/gatling
# 2. Comprimir el directorio de la última ejecución
zip -r /tmp/run.zip crudsimulation-20260308053047242/
# 3. Subir al dashboard con metadatos opcionales
curl -X POST http://localhost:3001/api/reports/upload \
-F "file=@/tmp/run.zip" \
-F "environment=staging" \
-F "version=v1.2.3" \
-F "notes=Post-deploy smoke test" \
-F "ticketUrl=https://acme.atlassian.net/browse/PERF-123" ¿Cómo extrae las métricas?
Funcionalidades principales
📈
Timeline interactivo
🎯
Baseline y columna delta
⚠️
Detección de regresiones
🔔
Webhooks a Slack / Teams
🔍
Comparación side-by-side
📋
Vista ejecutiva
Estructura del proyecto
Integrar en CI/CD
.github/workflows/performance.yml — fragmento GitHub Actions
- name: Run Gatling tests
run: ./mvnw gatling:test
- name: Upload report to dashboard
if: always()
run: |
REPORT_DIR=$(ls -td target/gatling/*/ | head -1)
zip -r /tmp/gatling-run.zip "$REPORT_DIR"
curl -X POST ${{ secrets.DASHBOARD_URL }}/api/reports/upload \
-F "file=@/tmp/gatling-run.zip" \
-F "environment=staging" \
-F "version=${{ github.sha }}" Referencia de funcionalidades
| Categoría | Funcionalidad |
|---|---|
| Timeline | Gráfico p50/p95/p99/RPS interactivo con líneas de SLA configurables |
| Baseline | Fija cualquier run como referencia — columna delta compara automáticamente |
| SLA | Umbrales de p95/p99 por simulación — resaltado visual en caso de brecha |
| Regresiones | Auto-alerta si el p95 más reciente supera en >20% el promedio de los últimos 5 runs |
| Webhooks | Notificaciones a Slack, Teams o JSON genérico en caso de aserción fallida |
| Filtros | Por fecha, estado, entorno y ticket URL — los filtros son compartibles por URL |
| Vista ejecutiva | Pass rate + tendencia para managers · min/max p95 + error rate para TL |
| Trazabilidad | Vincula runs a JIRA o Azure DevOps — filtro y badge visual en la tabla |
| Comparación | Visor de pantalla dividida con los HTML originales de dos runs |
| Metadatos | Edita versión, entorno, notas y ticket después de la importación |
| Exportación | Exporta resultados filtrados como CSV |