
Kyanos ist ein Netzwerkanalyse-Tool, das eBPF verwendet. Es kann die Zeit visualisieren, die Pakete im Kernel verbringen, Anfragen/Antworten erfassen und die Fehlerbehebung effizienter machen.

简体中文 | Englisch
Kyanos ist ein auf eBPF basierendes Werkzeug zur Analyse von Netzwerkproblemen, mit dem Sie Netzwerkanfragen wie HTTP-, Redis-, MySQL-, Kafka-, MongoDB-, RocketMQ- und DNS-Anfragen erfassen können. Es hilft Ihnen außerdem, abnormale Netzwerkprobleme zu analysieren und schnell Fehler zu beheben – ohne die komplexen Schritte des Paket-Mitschnitts, des Herunterladens und der Analyse.
# Filter by pid
./kyanos watch --pids 1234
# Filter by container id
./kyanos watch --container-id abc
# Filter by Redis key
./kyanos watch redis --keys my-key1,my-key2
# Filter by response byte size
./kyanos watch --resp-size 10000
Erweiterte Analysefähigkeiten: Anders als tcpdump, das nur einen feingranularen Paket-Mitschnitt bietet, unterstützt Kyanos die Aggregation erfasster Paketmetriken über verschiedene Dimensionen hinweg und liefert schnell die kritischen Daten, die für die Fehlerbehebung am nützlichsten sind.
Stellen Sie sich vor, die Bandbreite Ihres HTTP-Dienstes ist plötzlich vollständig ausgelastet – wie würden Sie schnell analysieren, which IPs und which requests die Ursache sind?
Mit Kyanos benötigen Sie nur einen Befehl: kyanos stat http --bigresp, um die größten Antwort-Bytegrößen zu finden, die an entfernte IPs gesendet werden, und um spezifische Daten zu Anfrage- und Antwortmetriken anzuzeigen.

Detaillierte Latenzinformationen auf Kernel-Ebene: In der Praxis können langsame Abfragen an entfernte Dienste wie Redis schwer präzise zu diagnostizieren sein. Kyanos stellt Kernel-Tracepoints vom Eintreffen der Anfragen/Antworten an der Netzwerkkarte bis zum Kernel-Socket-Puffer bereit und zeigt diese Details in visueller Form an. So können Sie genau erkennen, welche Stufe die Verzögerungen verursacht.

Leichtgewichtig und ohne Abhängigkeiten: Fast keine Abhängigkeiten – nur eine einzelne Binärdatei und ein Befehl; alle Ergebnisse werden in der Befehlszeile angezeigt.
Automatische Entschlüsselung von SSL-Datenverkehr: Alle erfassten Anfragen und Antworten werden im Klartext angezeigt.
HTTP-Datenverkehr mit Latenzdetails erfassen
Führen Sie den Befehl aus:
./kyanos watch http
Das Ergebnis sieht wie folgt aus:

Redis-Datenverkehr mit Latenzdetails erfassen
Führen Sie den Befehl aus:
./kyanos watch redis
Das Ergebnis sieht wie folgt aus:

Die langsamsten Anfragen der letzten 5 Sekunden ermitteln
Führen Sie den Befehl aus:
./kyanos stat --slow --time 5
Das Ergebnis sieht wie folgt aus:

Kyanos unterstützt derzeit Kernel-Versionen 3.10 (ab 3.10.0-957) und 4.14 oder höher (mit der Absicht, in Zukunft Versionen zwischen 4.7 und 4.14 zu unterstützen).
Sie können Ihre Kernel-Version mit
uname -rüberprüfen.
Sie können eine statisch gelinkte Binärdatei, die mit den Architekturen amd64 und arm64 kompatibel ist, von der Release-Seite herunterladen:
tar xvf kyanos_vx.x.x_linux_amd64.tar.gz
Dann führen Sie kyanos mit Root-Rechten aus:
sudo ./kyanos watch
Wenn die folgende Tabelle erscheint:
🎉
Glückwunsch! Kyanos wurde erfolgreich gestartet.
Die einfachste Verwendung erfasst alle derzeit von Kyanos unterstützten Protokolle:
sudo ./kyanos watch
Jeder Anfrage-Antwort-Datensatz wird als Zeile in einer Tabelle gespeichert, wobei jede Spalte grundlegende Informationen zu dieser Anfrage erfasst. Sie können die Pfeiltasten oder j/k verwenden, um sich durch die Datensätze nach oben und unten zu bewegen:

Drücken Sie Enter, um die Detailansicht zu öffnen:

In der Detailansicht zeigt der erste Abschnitt Latenzdetails. Jeder Block stellt einen „Knoten“ dar, den das Datenpaket durchläuft, z. B. den Prozess, die Netzwerkkarte und den Socket-Puffer.
Jeder Block enthält einen Zeitwert, der die verstrichene Zeit vom vorherigen Knoten bis zu diesem Knoten angibt. Dadurch wird der Ablauf vom Prozess, der die Anfrage sendet, über die Netzwerkkarte bis zum Kopieren der Antwort in den Socket-Puffer und schließlich zum Lesen durch den Prozess dargestellt, wobei die Dauer jedes Schritts angezeigt wird.
Der zweite Abschnitt bietet detaillierte Anfrage- und Antwortinhalte, aufgeteilt in Anfrage- und Antwortteile, und kürzt Inhalte über 1024 Byte.
Für gezielten Datenverkehr-Mitschnitt, z. B. HTTP-Datenverkehr:
./kyanos watch http
Sie können die Erfassung weiter eingrenzen, um Datenverkehr für einen bestimmten HTTP-Pfad aufzuzeichnen:
./kyanos watch http --path /abc
Weitere Informationen: Kyanos-Dokumentation
[!IMPORTANT]
Wenn Sie bei der Verwendung des Tools auf Probleme oder Fehler stoßen, können Sie gerne Fragen im Issue-Tracker stellen.
Während der Entwicklung von kyanos wurde Code aus den folgenden Projekten übernommen:
Für genauere Anfragen können Sie die folgenden Kontaktmöglichkeiten nutzen: