Ir al contenido
use-cases / a-live-metrics-dashboard-no-backend / hero
PIPE · SSE · SIN BACKEND

Un dashboard en vivo sin backend de métricas

Veinte agentes empujan sus métricas a una sola URL de pipe con curl -T. Tu dashboard lee la misma URL con ?progress y renderiza el stream SSE directamente en la página. Sin InfluxDB, sin Prometheus, sin scrape interval. Solo un cable.

Leer los docs de pipe
use-cases / a-live-metrics-dashboard-no-backend / mechanism

Una URL, dos lados

Cada agente hace curl de su línea a la misma ruta de pipe. El navegador del dashboard abre un EventSource sobre esa ruta con ?progress. El servidor de Hoody Pipe no retiene nada — los bytes que llegan por un lado salen por el otro.

agent · monitor.sh
PUT · emisor
#!/bin/sh
# Agent monitor loop — one line per second.
while true; do
  cpu=$(top -bn1 | awk '/Cpu/ [print $2]')
  mem=$(free | awk '/Mem:/ [printf "%.0f", $3/$2*100]')
  line="cpu=$cpu mem=$mem qps=$(cat /tmp/qps) ts=$(date +%s)"
  echo "$line" | curl -T - https://pipe.hoody.com/api/v1/pipe/metrics-$AGENT_ID
  sleep 1
done
el cable no retiene nada
dashboard.html · en tu navegador
GET ?progress · lector
// One <script> in one HTML file. No backend.
const tiles = document.querySelectorAll('[data-agent]');

tiles.forEach((tile) => [
  const id = tile.dataset.agent;
  // ?progress turns the pipe path into an SSE stream.
  const sse = new EventSource(
    `https://pipe.hoody.com/api/v1/pipe/metrics-$[id]?progress`,
  );

  sse.addEventListener('metric', (e) => [
    const [ cpu, mem, qps ] = JSON.parse(e.data);
    tile.querySelector('.cpu').textContent = `$[cpu]%`;
    tile.querySelector('.mem').textContent = `$[mem]%`;
    tile.querySelector('.qps').textContent = qps;
  ]);
]);

Los agentes hacen curl. El navegador hace EventSource. El pipe reenvía. No hay nada en medio que escalar, reiniciar o pagar. Cierra el dashboard y los streams terminan. Ábrelo de nuevo y ves datos en vivo en menos de un segundo.

use-cases / a-live-metrics-dashboard-no-backend / powers

Tres poderes de un dashboard que se evapora

Lo que pierdes al borrar el backend, lo recuperas como algo más simple.

LATENCIA

Sub-segundo por construcción

No hay scrape interval que esperar. La última escritura del agente es el frame actual del dashboard. El pipe reenvía directo — sin flush intermedio.

OPERACIONES

Nada que retener, nada que falle

Sin política de retención porque no hay almacenamiento. Sin disco que llenar, sin ventana de compactación, sin índice de series temporales que corromper. La métrica existe mientras un lector la esté mirando.

ECONOMÍA

Un solo HTML estático lo entrega

El dashboard es un archivo HTML que puedes hospedar en cualquier sitio — o abrirlo desde disco. No hay agente que instalar, no hay daemon que correr, no hay asiento de DataDog que aprovisionar. La URL del pipe es todo el stack.

use-cases / a-live-metrics-dashboard-no-backend / evaporates

Lo que se evapora

El stack estándar de agente-a-dashboard tiene cuatro piezas móviles. El modelo de pipe tiene cero. Mismo cable, media pantalla de curl.

ANTES · CUATRO PIEZAS QUE CUIDARel stack típico
  • statsd / telegraf
  • InfluxDB / TimescaleDB
  • Grafana / Datadog
  • archivos de scrape config
cuatro configs · cuatro upgrades · cuatro facturas
DESPUÉS · UN CABLEdos comandos curl
# Each agent: one line per metric.echo "cpu=64 mem=42" | curl -T - https://pipe.hoody.com/api/v1/pipe/metrics-$ID# Each viewer: one curl, or new EventSource() in HTML.curl -N https://pipe.hoody.com/api/v1/pipe/metrics-$ID?progress
sin almacenamiento · sin scraper · sin daemon

Cuando te saltas la base de datos, las cosas que solías gestionar dejan de existir. No hay política de retención sobre un cable.

use-cases / a-live-metrics-dashboard-no-backend / capacity

Lo que el pipe te da

Una ruta de pipe es infraestructura pequeña pero real. Los números vienen de las garantías de la API de Hoody Pipe, no de benchmarks inventados.

  1. RECEPTORES POR RUTA256

    Hasta 256 dashboards o tails de curl pueden suscribirse a la misma ruta con ?n. El lector más lento aplica backpressure pero nunca bloquea a los demás.

  2. ESPECTADORES DE PROGRESS50

    Hasta 50 visores SSE de ?progress por ruta. No consumen un slot de receptor — tus pestañas de dashboard y tu terminal pueden ver en paralelo.

  3. LATENCIA DE ALMACENAMIENTO0 ms

    El servidor no escribe a disco. Los bytes que llegan por el lado emisor salen por el lado lector. No hay ventana de flush entre ellos.

Límites según la API de Hoody Pipe: cuenta de receptores 1–256, espectadores de progress topados a 50 por ruta, TTL de conexión de progress de 30 minutos, linger de 30 segundos tras la transferencia.

use-cases / a-live-metrics-dashboard-no-backend / punchline

El dashboard no consultó una base de datos. Los bytes simplemente llegaron.

visto en vivo · viernesevaporado · sábado
CÓMO ERA LA ARQUITECTURA ANTIGUAagent → statsd → InfluxDB → Grafanacuatro piezas móviles · cuatro archivos de config · cuatro facturas
CÓMO ES AHORAecho $line | curl -T - pipe/metricsuna línea — y el dashboard es solo un archivo HTML
use-cases / a-live-metrics-dashboard-no-backend / replaces

Lo que esto reemplaza

Las herramientas estándar a las que recurres cuando quieres un dashboard de métricas. Cada una te cobra una base de datos y un daemon. El pipe no te cobra ninguna.

  • AWS Lambda + CloudWatchFacturación por invocación para lo que es solo curl
  • servicios de routing a medidaTodo un microservicio para reenviar bytes que ya tenían una URL
  • Stack de Prometheus + GrafanaDos daemons, un bucle de scrape, y un dashboard que tienes que autoalojar
  • InfluxDB + TelegrafUna base de datos de series temporales para datos que no guardas más allá de la pantalla
  • Recolección de métricas de DataDogPrecio por host para un número que querías ver una vez
  • Pipelines de ingesta de métricas a medidaKafka + consumer + sink para un valor que el agente podía simplemente empujar
use-cases / a-live-metrics-dashboard-no-backend / cta

Deja de hacer scrape. Deja de almacenar. Mira el cable — y cuando dejas de mirar, el cable está vacío.

Leer los docs de pipe
use-cases / a-live-metrics-dashboard-no-backend / related

Lee los otros