18 Punkte von GN⁺ 2025-02-21 | 2 Kommentare | Auf WhatsApp teilen
  • Ein Tool, mit dem sich alle Netzwerk-Anfragen verfolgen lassen, die in Docker-Containern entstehen
    • Überträgt die Funktionen von Wireshark auf Container-Umgebungen
  • Damit lässt sich der Netzwerk-Traffic von Backend-Servern in Echtzeit analysieren, wodurch sich Probleme in Produktionsumgebungen schneller beheben lassen

Hauptfunktionen

  • Sofort ohne zusätzliche Konfiguration einsatzbereit
    • Es reicht, vor den Startbefehl des Backend-Servers subtrace run zu setzen
  • Keine Code-Änderungen erforderlich
  • Unterstützt alle Programmiersprachen (Python, Node.js, Go usw.)
  • Vollständige Payloads, Header, Status-Codes und Latenzen von Anfragen einsehbar
  • Performance-Overhead unter 100 µs
  • Auf ClickHouse basierend
  • Open Source

So funktioniert Subtrace

  • Fängt alle netzwerkbezogenen Linux-Systemaufrufe (syscall) mit Seccomp BPF ab
  • Proxyt TCP-Verbindungen, analysiert HTTP-Anfragen und überträgt sie per WebSocket an den Browser
  • Anfragen lassen sich visuell über den Netzwerk-Tab der Chrome DevTools prüfen
  • Anders als bei logbasierten Lösungen wie Sentry oder OpenTelemetry lassen sich alle Anfragen in Echtzeit unverändert einsehen

Zur Mitwirkung am Code

  • Subtrace ist Open Source, nimmt derzeit aber keine Pull Requests an
  • Der Grund ist, dass das Startup als kleines Team arbeitet und derzeit nicht die Kapazität hat, die Open-Source-Community effizient zu betreuen
  • Die Richtlinie kann sich künftig ändern; Feature-Requests und Bug-Reports sind jedoch jederzeit willkommen

2 Kommentare

 
codemasterkimc 2025-02-21

Man entdeckt Probleme wohl mit Falco oder linkerd und analysiert sie bei Bedarf dann mit subtrace~ :)

 
GN⁺ 2025-02-21
Hacker-News-Kommentare
  • Beim Lesen der Dokumentation wirkt es so, als würde der subtrace-Prozess alle Daten an den Server senden. In einer Produktionsumgebung, in der mit API-Schlüsseln und persönlichen Daten gearbeitet wird, möchte ich das nicht
    • Ich frage mich, ob es eine Möglichkeit gibt, das vollständig Self-Hosted zu betreiben. Falls nicht: Gibt es Pläne dafür? Mich würde auch interessieren, wie sich eine Self-Hosted-Option monetarisieren ließe
  • Wireshark ist hier etwas irreführend. Es ist eher ein „Netzwerk-Inspektor“, wie man ihn aus dem Netzwerk-Tab des Browsers kennt
    • Sieht wirklich nützlich aus, und ich werde es definitiv ausprobieren, um zu sehen, ob es in meinen Werkzeugkasten gehört
  • Es scheint nur für HTTP-Anfragen zu gelten. Dann ist der Vergleich mit Wireshark nicht passend
  • Das schmerzhafteste Debugging-Szenario bei Docker-Networking ist immer der Umgang mit Nicht-TCP-Traffic. Trotzdem sieht es nützlich aus. Was ich nicht verstehe, ist, warum ein Account-Token nötig ist. Braucht subtrace eine Netzwerkverbindung? Das alles sollte lokal laufen, und solche Verbindungsdetails sollten den Host niemals verlassen
  • Glückwunsch zur seccomp-basierten Interception. Das ist ein wirklich eleganter Weg, dieses Problem zu lösen. Wir haben bei mitmproxy interessante Arbeit mit BPF_PROG_TYPE_CGROUP_SOCK eBPF gemacht, aber in Containern funktioniert das überhaupt nicht. Es ist cool zu sehen, dass das Abfangen aller relevanten System-Calls gut funktioniert
  • Ich frage mich, ob TLS entschlüsselt werden kann. Vermutlich wäre das möglich, indem allgemeine Bibliotheksaufrufe gehookt werden
  • Im Video sieht es so aus, als würde das Dashboard bei sibtrace.dev gehostet. Ich frage mich, ob meine Daten dorthin gesendet werden. Das wäre absolut nicht akzeptabel
  • Ich habe es noch nicht ausprobiert, aber ich frage mich, wie man in Produktion eine bestimmte Anfrage oder Session debuggt. Ich würde gern wissen, ob man nach so etwas wie einer Request-Trace-ID filtern kann
  • Ich wollte schon immer so ein Tool. Wenn ich das nächste Mal den Traffic eines Docker-Containers untersuchen muss, werde ich es ausprobieren