18 pontos por GN⁺ 2025-02-21 | 2 comentários | Compartilhar no WhatsApp
  • Uma ferramenta que permite rastrear todas as requisições de rede que ocorrem em contêineres Docker
    • Aplica os recursos do Wireshark ao ambiente de contêineres
  • Com isso, é possível analisar em tempo real o tráfego de rede de servidores backend e resolver problemas em produção mais rapidamente

Principais recursos

  • Pronto para uso imediato sem configuração adicional
    • Basta adicionar subtrace run antes do comando de execução do servidor backend
  • Não requer alterações no código
  • Suporte a todas as linguagens de programação (Python, Node.js, Go etc.)
  • Permite verificar o payload completo da requisição, cabeçalhos, código de status e latência
  • Overhead de desempenho inferior a 100µs
  • Baseado em Clickhouse
  • Open source

Como o Subtrace funciona

  • Intercepta todas as chamadas de sistema (syscall) relacionadas à rede no Linux usando Seccomp BPF
  • Faz proxy das conexões TCP para analisar requisições HTTP e enviá-las ao navegador via WebSocket
  • Permite visualizar as requisições usando a aba Network do Chrome DevTools
  • Diferente de soluções baseadas em logs como Sentry ou OpenTelemetry, permite ver todas as requisições em tempo real exatamente como são

Sobre contribuições de código

  • O Subtrace é open source, mas no momento não aceita Pull Requests
  • Isso se deve ao fato de, como startup, ser operado por uma equipe pequena e não haver capacidade suficiente para gerenciar a comunidade open source de forma eficiente
  • A política pode mudar no futuro, e solicitações de recursos e relatórios de bugs são sempre bem-vindos

2 comentários

 
codemasterkimc 2025-02-21

Dá para descobrir o problema com o Falco ou o linkerd e, se necessário, analisar com o subtrace~ :)

 
GN⁺ 2025-02-21
Comentários no Hacker News
  • Lendo a documentação, parece que o processo do subtrace envia todos os dados para o servidor. Eu não gostaria disso em um ambiente de produção que lida com chaves de API e dados pessoais
    • Fico curioso se existe uma forma de rodar isso totalmente em self-hosting. Se não existir, há planos para isso? Também fico curioso sobre como pretendem monetizar uma opção self-hosted
  • Chamar de Wireshark é um pouco enganoso. Parece mais um "inspetor de rede" como a aba de rede do navegador
    • Parece realmente útil, e com certeza vou testar para ver se entra na minha caixa de ferramentas
  • Parece se aplicar apenas a requisições HTTP. Nesse caso, a comparação com o Wireshark não é apropriada
  • Nos cenários de depuração mais dolorosos em redes Docker, quase sempre estamos lidando com tráfego não-TCP. Ainda assim, parece útil. O que não entendo é por que precisa de um token de conta. O subtrace precisa de conexão de rede? Tudo isso deveria rodar localmente, e esse tipo de detalhe de conexão jamais deveria sair do host
  • Parabéns pela interceptação baseada em seccomp. É uma forma realmente elegante de resolver esse problema. Fizemos um trabalho interessante no mitmproxy usando eBPF BPF_PROG_TYPE_CGROUP_SOCK, mas isso não funciona de jeito nenhum em contêineres. É legal ver que interceptar todas as syscalls relevantes funciona bem
  • Fico curioso se ele consegue descriptografar TLS. Provavelmente seria possível fazendo hook nas chamadas de bibliotecas comuns
  • Pelo vídeo, parece que o dashboard é hospedado em sibtrace.dev. Fico curioso se meus dados são enviados para lá. Isso seria totalmente inaceitável
  • Ainda não usei, mas minha dúvida é como depurar uma requisição/sessão específica em produção. Fico curioso se dá para filtrar por algo como um request trace ID
  • Sempre quis uma ferramenta assim. Na próxima vez que eu precisar inspecionar o tráfego de um contêiner Docker, vou experimentar