18 puntos por GN⁺ 2025-02-21 | 2 comentarios | Compartir por WhatsApp
  • Una herramienta que permite rastrear todas las solicitudes de red que ocurren dentro de contenedores Docker
    • Aplica las capacidades de Wireshark al entorno de contenedores
  • Con esto, es posible analizar en tiempo real el tráfico de red de servidores backend y resolver más rápido los problemas en producción

Funciones principales

  • Se puede usar de inmediato sin configuración adicional
    • Solo hay que agregar subtrace run antes del comando de ejecución del servidor backend
  • No requiere modificar el código
  • Compatible con todos los lenguajes de programación (Python, Node.js, Go, etc.)
  • Permite ver el payload completo de las solicitudes, headers, códigos de estado y latencia
  • Overhead de rendimiento inferior a 100µs
  • Basado en Clickhouse
  • Código abierto

Cómo funciona Subtrace

  • Intercepta todas las llamadas al sistema (syscall) de Linux relacionadas con la red usando Seccomp BPF
  • Hace proxy de las conexiones TCP para analizar solicitudes HTTP y las envía al navegador mediante WebSocket
  • Permite visualizar las solicitudes usando la pestaña de red de Chrome DevTools
  • A diferencia de herramientas basadas en logs como Sentry u OpenTelemetry, permite ver todas las solicitudes tal cual, en tiempo real

Sobre las contribuciones de código

  • Subtrace es de código abierto, pero actualmente no acepta Pull Requests
  • Esto se debe a que, por ser una startup, opera con un equipo pequeño y no tiene capacidad suficiente para gestionar eficientemente una comunidad open source
  • La política podría cambiar en el futuro, y las solicitudes de funciones y reportes de errores siempre son bienvenidos

2 comentarios

 
codemasterkimc 2025-02-21

Entonces, sería cosa de detectar el problema con Falco o linkerd y, si hace falta, analizarlo con subtrace~ :)

 
GN⁺ 2025-02-21
Comentarios en Hacker News
  • Al leer la documentación, parece que el proceso de subtrace envía todos los datos al servidor. No me gustaría eso en un entorno de producción que maneja claves de API y datos privados
    • Me pregunto si hay alguna forma de ejecutarlo completamente en self-hosting. Si no la hay, ¿está en los planes? También me pregunto cómo monetizarían una opción self-hosted
  • Lo de Wireshark es un poco engañoso. Se parece más a un "inspector de red" que usa la pestaña de red del navegador
    • De verdad parece útil, y definitivamente lo voy a probar para ver si entra en mi caja de herramientas
  • Parece que solo aplica a solicitudes HTTP. Si es así, la comparación con Wireshark no es adecuada
  • En redes de Docker, los escenarios de depuración más dolorosos siempre son los que involucran tráfico que no es TCP. Aun así, se ve útil. Lo que no entiendo es por qué necesita un token de cuenta. ¿subtrace necesita una conexión de red? Todo esto debería ejecutarse localmente, y este tipo de detalles de conexión nunca deberían salir del host
  • Felicidades por la intercepción basada en seccomp. Es una forma realmente elegante de resolver este problema. En mitmproxy hicimos algo interesante usando eBPF con BPF_PROG_TYPE_CGROUP_SOCK, pero no funciona en absoluto dentro de contenedores. Da gusto ver que interceptar todas las llamadas al sistema relevantes funciona bien
  • Me pregunto si puede descifrar TLS. Probablemente sería posible enganchándose a llamadas de bibliotecas comunes
  • Al ver el video, parece que el dashboard está alojado en sibtrace.dev. Me pregunto si mis datos se envían allá. Eso jamás debería pasar
  • No lo he probado, pero tengo curiosidad por cómo se depuran solicitudes o sesiones específicas en producción. Me pregunto si se puede filtrar con algo como un ID de trazabilidad de la solicitud
  • Siempre quise una herramienta así. La próxima vez que tenga que inspeccionar el tráfico de un contenedor de Docker, la voy a probar