
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
20 個のエージェントが curl -T で 1 つのパイプ URL にメトリクスを送ります。ダッシュボードは ?progress を付けて同じ URL を読み、SSE ストリームを直接ページにレンダリングします。InfluxDB なし、Prometheus なし、スクレイプ間隔なし。ただのワイヤー。
Prometheus なし、InfluxDB なし、メトリクスサービスなし — パイプ上の SSE のみ
すべてのエージェントが自分の行を同じパイプパスに curl で送ります。ダッシュボードのブラウザはそのパスに ?progress 付きで EventSource を開きます。Hoody Pipe サーバーは何も保持しません — 一方の側に到着したバイトはもう一方の側から出ていきます。
#!/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// 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;
]);
]);エージェントは curl します。ブラウザは EventSource します。パイプは転送します。間にスケール、再起動、支払うものは何もありません。ダッシュボードを閉じるとストリームは終了します。再度開けば、1 秒以内にライブデータが見えます。
バックエンドを削除することで諦めるものは、よりシンプルなものとして取り戻せます。
待つスクレイプ間隔はありません。エージェントの最後の書き込みがダッシュボードの現在のフレームです。パイプは直接転送します — 中間フラッシュなし。
ストレージがないので、保持ポリシーもありません。ディスクが満杯になることも、コンパクションウィンドウも、破損する時系列インデックスもありません。メトリクスは読者が見ている間だけ存在します。
ダッシュボードはどこでもホストできる、あるいはディスクから開ける HTML ファイルです。インストールするエージェントも、実行するデーモンも、プロビジョニングする DataDog シートもありません。パイプ URL がスタック全体です。
標準的なエージェントからダッシュボードへのスタックには 4 つの可動部分があります。パイプモデルにはゼロです。同じワイヤー、画面の半分の curl。
データベースをスキップすると、管理していたものが存在しなくなります。ワイヤーには保持ポリシーはありません。
パイプパスは小さいですが本物のインフラです。数値は捏造されたベンチマークではなく、Hoody Pipe API の保証から来ています。
?n を付けて最大 256 のダッシュボードまたは curl の tail が同じパスにサブスクライブできます。最も遅い読者がバックプレッシャーを適用しますが、他をブロックすることはありません。
パスあたり最大 50 の ?progress SSE ビューア。受信者スロットを消費しません — ダッシュボードタブとターミナルが並行して見ることができます。
サーバーはディスクに書き込みません。送信者側に到着したバイトは読者側から出ていきます。両者の間にフラッシュウィンドウはありません。
Hoody Pipe API による制限: 受信者数 1–256、プログレス観戦者はパスあたり 50 で上限、30 分のプログレスコネクション TTL、転送後 30 秒のリンガー。
ダッシュボードはデータベースに問い合わせませんでした。バイトはただ到着しました。
メトリクスダッシュボードが欲しいときに手を伸ばす標準的なツール。それぞれがデータベースとデーモンを請求します。パイプはどちらも請求しません。
スクレイピングをやめましょう。保存をやめましょう。ワイヤーを見守りましょう — 見るのをやめれば、ワイヤーは空になります。