
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
障害が発生。3 人のエンジニアが同時に同じログを見たい。1 つの送信側が tail -F を Hoody Pipe URL に流し込む。リンクを持つ人は誰でも curl を実行し、バイトがリアルタイムで流れるのを見られる。踏み台なし、エージェントのインストールなし、ダッシュボードのシートなし。
本番コンテナで、1 行が tail を Hoody Pipe URL にそのまま流し込む。受信側は同じパスを GET。パイプは何も保持しない — バイトはそのまま通過。最初に接続した受信側が送信側のブロックを解除し、最大 256 人のリーダーが同じパスに参加できる。
# On the production container — one line.
# tail -F follows new lines forever; curl -T - PUTs stdin
# straight into a pipe path. ?n=4 says "wait for 4 readers".
tail -F /var/log/app/*.log \
| curl -T - \
"https://prod-pipe.containers.hoody.com/api/v1/pipe/live?n=4"
# [INFO] Waiting for 4 receiver(s) to connect...
# [INFO] Streaming to 4 receiver(s)...# Any engineer with the URL — same command, same path.
# The response body IS the live stdout of the sender.
# Up to 256 readers can join. SSE progress is available too.
curl "https://prod-pipe.containers.hoody.com/api/v1/pipe/live?n=4"
# 200 GET /v1/orders/8421 · 18ms
# POST /v1/checkout user=u_28f payload=ok
# 500 POST /v1/checkout · stripe timeout
# retrying charge attempt=2/3ドキュメント化された Pipe API の 2 つの部分: 送信側の PUT /api/v1/pipe/[path]、すべてのリーダーの GET /api/v1/pipe/[path]、両方とも同じ n をキーとする。サーバーは送信側の Content-Type を転送し、受信側を待つ間最大 5 分の TTL でコネクションを保持し、いずれかのリーダーが遅い場合はバックプレッシャーを適用する。
ログ URL は Datadog のシートとは違う動作をする。ログインではなく URL で読まれる。送信側が止まると消える。そしてインシデントチャンネル全体にスケールする。
n=N は Pipe API でドキュメント化されている: 同じ n で同じパスに参加するすべてのリーダーは、同一のファンアウトコピーを受け取る。SRE、オンコール、スマートフォンから見守る創業者 — すべてが同じストリームを同時に tail する。
リーダー側にインストールするものは何もない。HTTP を話すもの — curl、fetch、ブラウザタブ、URL をプレビューする Slack インシデントチャンネル — はすべて有効なログ tail。バイトはレスポンスボディそのもの。
送信側が切断すると、パイプは消える。設定する保持期間なし、クリーンアップするログ容量なし、インターネットに残るエンドポイントなし。URL は場所ではなくパスだった — そしてそのパスは火事が終わると閉じる。
Pipe API 仕様より。URL を玩具ではなくインフラのように感じさせる制限と動作。
n のドキュメント化された上限。あなたのインシデントチャンネルがシート切れになることはない。
パイプはエンドツーエンドで直接ストリーミング。中間ディスクなし、管理する保持期間なし。
受信側は送信側より先に接続できる; サーバーは最大 5 分間スロットを保持する。
出典: Hoody Pipe API — /api/v1/pipe/[path]、n パラメータ、未確立パイプの TTL についてドキュメント化された制限。
ログはもう場所ではない。パスだ。
現在、3 人のエンジニアが同じ本番ログを見つめるために起動している一連のツールと儀式。それぞれがシート、エージェント、ダッシュボードごとに課金する。パイプは 1 つの URL。
障害が終わる。送信側を ctrl-C する。パイプは消える。クリーンアップするものは何もない。