Ir al contenido
use-cases / tail-prod-logs-to-a-url / hero
PIPE · STREAMING DE LOGS EN VIVO

Sigue los logs de producción en una URL que cualquiera puede curl-ear

Hay un incendio. Tres ingenieros quieren los mismos logs al mismo tiempo. Un emisor canaliza tail -F a una URL de Hoody Pipe. Cualquiera con el enlace ejecuta curl y ve los bytes pasar en tiempo real. Sin bastion, sin instalación de agentes, sin licencia de dashboard.

use-cases / tail-prod-logs-to-a-url / mechanism

Un emisor. Muchos curls. Sin agente.

En el contenedor de producción, una sola línea canaliza tail directo a una URL de Hoody Pipe. Los receptores hacen GET a la misma ruta. El pipe no guarda nada — los bytes fluyen a través. El primer receptor en conectarse desbloquea al emisor; hasta 256 lectores pueden unirse a la misma ruta.

prod-app-7 · /var/log/app
PUT · emisor
# En el contenedor de producción — una línea.
# tail -F sigue líneas nuevas para siempre; curl -T - hace PUT de stdin
# directo a una ruta de pipe. ?n=4 dice "espera a 4 lectores".

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)...
el pipe no guarda nada · los bytes fluyen a través
cualquier portátil · sin ssh
GET · lectores
# Cualquier ingeniero con la URL — mismo comando, misma ruta.
# El cuerpo de la respuesta ES el stdout en vivo del emisor.
# Hasta 256 lectores pueden unirse. SSE de progreso también disponible.

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

Dos piezas de la API documentada de Pipe: PUT /api/v1/pipe/[path] en el emisor, GET /api/v1/pipe/[path] en cada lector, ambas indexadas por el mismo n. El servidor reenvía el Content-Type del emisor, mantiene la conexión hasta un TTL de 5 minutos esperando lectores y aplica backpressure si algún lector va lento.

use-cases / tail-prod-logs-to-a-url / powers

Lo que el pipe te da y un dashboard no

Una URL de logs se comporta distinto a una licencia de Datadog. Se lee por URL, no por login. Desaparece cuando el emisor se detiene. Y escala a un canal entero de incidente.

MULTIJUGADOR POR DEFECTO

Hasta 256 curls sobre un mismo stream

n=N está documentado en la API de Pipe: cada lector que se une a la misma ruta con el mismo n recibe una copia idéntica del fan-out. SREs, on-call, el fundador mirando desde el móvil — todos siguen el mismo stream a la vez.

HTTP-NATIVO

Sin agente. Sin reenviador. Solo curl.

No hay nada que instalar del lado del lector. Cualquier cosa que hable HTTP — curl, fetch, una pestaña del navegador, un canal de incidente de Slack previsualizando la URL — es un tail de logs válido. Los bytes son el cuerpo de la respuesta.

EFÍMERO

ctrl-C y el pipe se va

Cuando el emisor se desconecta, el pipe desaparece. Sin retención que configurar, sin volumen de logs que limpiar, sin endpoint sobrante expuesto a internet. La URL era una ruta, no un lugar — y la ruta se cierra cuando termina el incendio.

use-cases / tail-prod-logs-to-a-url / capacity

Los números detrás de la URL

De la spec de la API de Pipe. Límites y comportamientos que hacen que una URL se sienta como infraestructura, no un juguete.

  1. LECTORES POR RUTA256

    El tope documentado de n. Tu canal de incidente no se queda sin asientos.

  2. BYTES ALMACENADOS0

    El pipe es streaming directo de extremo a extremo. Sin disco intermedio, sin retención que gestionar.

  3. TTL DE ESPERA5 min

    Los receptores pueden conectarse antes que el emisor; el servidor mantiene el slot hasta 5 minutos.

Fuente: API de Hoody Pipe — límites documentados para /api/v1/pipe/[path], parámetro n y TTL del pipe no establecido.

use-cases / tail-prod-logs-to-a-url / punchline

Los logs ya no son un lugar. Son una ruta.

sin bastion · sin licencia · sin reenviadoruna URL · hasta 256 curls
ayerssh bastion → tail -f /var/log/app.log
hoyhttps://prod-pipe.../api/v1/pipe/live
Lee la API de pipe
use-cases / tail-prod-logs-to-a-url / replaces

Lo que esto reemplaza

El conjunto de herramientas y rituales que invocas hoy para que tres ingenieros miren el mismo log de producción. Cada uno cobra por licencia, por agente o por dashboard. El pipe es una URL.

  • Licencias de Datadog LogsLicencia por usuario para ver los mismos bytes
  • SSH bastion + tail -fHop, ssh, encontrar el archivo de log, repetir por ingeniero
  • Reenviadores Loggly / LogtailInstalación de agente, configuración, factura de retención
  • Dashboards ELK / SplunkStack pesado para alojar un solo tail
  • Screenshare en Slack de tail -fUno hace tail, los demás entornan los ojos
  • Grupos de logs del proveedor cloudLicencia de consola más IAM por lector
use-cases / tail-prod-logs-to-a-url / cta

El incendio termina. Haces ctrl-C al emisor. El pipe desaparece. No hay nada que limpiar.

Lee la API de pipe
use-cases / tail-prod-logs-to-a-url / related

Lee los otros