Zum Inhalt springen
use-cases / a-live-metrics-dashboard-no-backend / hero
PIPE · SSE · KEIN BACKEND

Ein Live-Dashboard ganz ohne Metrik-Backend

Zwanzig Agenten schicken ihre Metriken per curl -T an eine Pipe-URL. Dein Dashboard liest dieselbe URL mit ?progress und rendert den SSE-Stream direkt in die Seite. Kein InfluxDB, kein Prometheus, kein Scrape-Intervall. Nur eine Leitung.

Pipe-Docs lesen
use-cases / a-live-metrics-dashboard-no-backend / mechanism

Eine URL, zwei Seiten

Jeder Agent curlt seine Zeile in denselben Pipe-Pfad. Der Browser des Dashboards öffnet eine EventSource auf diesem Pfad mit ?progress. Der Hoody-Pipe-Server hält nichts – Bytes, die auf der einen Seite ankommen, verlassen die andere.

agent · monitor.sh
PUT · sender
#!/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
die Leitung hält nichts
dashboard.html · in deinem Browser
GET ?progress · reader
// 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;
  ]);
]);

Agenten curlen. Der Browser nutzt EventSource. Die Pipe leitet weiter. Dazwischen gibt es nichts, das skaliert, neu gestartet oder bezahlt werden müsste. Schließ das Dashboard und die Streams enden. Öffne es wieder und du siehst innerhalb einer Sekunde Live-Daten.

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

Drei Stärken eines verdunstenden Dashboards

Was du aufgibst, indem du das Backend löschst, bekommst du als etwas Einfacheres zurück.

LATENZ

Sub-Sekunde von Natur aus

Es gibt kein Scrape-Intervall, auf das man warten müsste. Der letzte Write des Agenten ist der aktuelle Frame des Dashboards. Die Pipe leitet direkt weiter – keine Zwischen-Flush.

BETRIEB

Nichts aufzubewahren, nichts, was ausfallen könnte

Keine Aufbewahrungs-Policy, weil es keinen Speicher gibt. Keine Disk, die volllaufen kann, kein Compaction-Fenster, kein Time-Series-Index, der korrumpieren könnte. Die Metrik existiert, solange ein Reader zuschaut.

ÖKONOMIE

Eine statische HTML-Datei liefert es aus

Das Dashboard ist eine HTML-Datei, die du überall hosten – oder von der Festplatte öffnen kannst. Es gibt keinen Agenten zu installieren, keinen Daemon zu betreiben, keinen DataDog-Sitz zu provisionieren. Die Pipe-URL ist der gesamte Stack.

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

Was verdunstet

Der übliche Agent-zu-Dashboard-Stack hat vier bewegliche Teile. Das Pipe-Modell hat null. Gleiche Leitung, ein halber Bildschirm curl.

VORHER · VIER TEILE ZU BABYSITTENder typische Stack
  • statsd / telegraf
  • InfluxDB / TimescaleDB
  • Grafana / Datadog
  • Scrape-Konfigurationsdateien
vier Configs · vier Upgrades · vier Rechnungen
NACHHER · EINE LEITUNGzwei curl-Befehle
# 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
kein Speicher · kein Scraper · kein Daemon

Wenn du die Datenbank überspringst, hören die Dinge, die du früher verwaltet hast, auf zu existieren. Auf einer Leitung gibt es keine Aufbewahrungs-Policy.

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

Was die Pipe dir gibt

Ein Pipe-Pfad ist kleine, aber echte Infrastruktur. Die Zahlen kommen aus den Garantien der Hoody-Pipe-API, nicht aus erfundenen Benchmarks.

  1. EMPFÄNGER PRO PFAD256

    Bis zu 256 Dashboards oder curl-Tails können denselben Pfad mit ?n abonnieren. Der langsamste Reader wendet Backpressure an, blockiert die anderen aber nie.

  2. PROGRESS-ZUSCHAUER50

    Bis zu 50 ?progress-SSE-Viewer pro Pfad. Sie verbrauchen keinen Empfänger-Slot – deine Dashboard-Tabs und dein Terminal können parallel zuschauen.

  3. SPEICHER-LATENZ0 ms

    Der Server schreibt nicht auf Disk. Bytes, die auf der Sender-Seite ankommen, verlassen die Reader-Seite. Es gibt kein Flush-Fenster dazwischen.

Limits laut Hoody Pipe API: Empfängeranzahl 1–256, Progress-Zuschauer maximal 50 pro Pfad, 30-Minuten-TTL für Progress-Verbindungen, 30-Sekunden-Linger nach der Übertragung.

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

Das Dashboard hat keine Datenbank abgefragt. Die Bytes sind einfach angekommen.

live verfolgt · Freitagverdunstet · Samstag
WIE DIE ALTE ARCHITEKTUR AUSSAHagent → statsd → InfluxDB → Grafanavier bewegliche Teile · vier Konfigdateien · vier Rechnungen
WIE ES JETZT AUSSIEHTecho $line | curl -T - pipe/metricseine Zeile – und das Dashboard ist nur eine HTML-Datei
use-cases / a-live-metrics-dashboard-no-backend / replaces

Was das ersetzt

Die üblichen Tools, zu denen du greifst, wenn du ein Metriken-Dashboard willst. Jedes berechnet dir eine Datenbank und einen Daemon. Die Pipe berechnet dir keins von beidem.

  • AWS Lambda + CloudWatchAbrechnung pro Invocation für etwas, das einfach nur curl ist
  • eigene Routing-ServicesEin ganzer Microservice, um Bytes weiterzuleiten, die schon eine URL hatten
  • Prometheus + Grafana StackZwei Daemons, eine Scrape-Schleife und ein Dashboard, das du selbst hosten musst
  • InfluxDB + TelegrafEine Time-Series-Datenbank für Daten, die du nicht über den Bildschirm hinaus aufbewahrst
  • DataDog-MetriksammlungPro-Host-Pricing für eine Zahl, die du einmal sehen wolltest
  • eigene Metrik-Ingest-PipelinesKafka + Consumer + Sink für einen Wert, den der Agent einfach pushen könnte
use-cases / a-live-metrics-dashboard-no-backend / cta

Hör auf zu scrapen. Hör auf zu speichern. Beobachte die Leitung – und wenn du nicht mehr hinschaust, ist die Leitung leer.

Pipe-Docs lesen
use-cases / a-live-metrics-dashboard-no-backend / related

Lies die anderen