
Kyanos is a networking analysis tool using eBPF. It can visualize the time packets spend in the kernel, capture requests/responses, makes troubleshooting more efficient.

Chinois simplifié | Anglais
Kyanos est un outil d'analyse des problèmes réseau basé sur eBPF qui vous permet de capturer des requêtes réseau, telles que HTTP, Redis, MySQL, Kafka, MongoDB, RocketMQ, et DNS. Il vous aide également à analyser les problèmes réseau anormaux et à les dépanner rapidement, sans les étapes complexes de capture, téléchargement et analyse de paquets.
# Filtrer par pid
./kyanos watch --pids 1234
# Filtrer par identifiant de conteneur
./kyanos watch --container-id abc
# Filtrer par clé Redis
./kyanos watch redis --keys my-key1,my-key2
# Filtrer par taille de réponse
./kyanos watch --resp-size 10000
Capacités d'analyse avancées : Contrairement à tcpdump, qui ne fournit qu'une capture de paquets fine, Kyanos permet d'agréger les métriques des paquets capturés selon différentes dimensions, fournissant rapidement les données critiques les plus utiles pour le dépannage.
Imaginez que la bande passante de votre service HTTP soit soudainement saturée – comment analyser rapidement quelles IP et quelles requêtes en sont la cause ?
Avec Kyanos, une seule commande suffit : kyanos stat http --bigresp pour trouver les plus grandes tailles de réponse envoyées aux IP distantes et visualiser les données spécifiques des métriques de requêtes et réponses.

Détails de latence au niveau du noyau : Dans la réalité, les requêtes lentes vers des services distants comme Redis peuvent être difficiles à diagnostiquer avec précision. Kyanos fournit des points de trace du noyau, de l'arrivée des requêtes/réponses sur la carte réseau jusqu'au tampon de socket du noyau, affichant ces détails dans un format visuel. Cela permet d'identifier exactement l'étape qui cause les retards.

Léger et sans dépendances : Presque zéro dépendance – un seul fichier binaire et une commande, tous les résultats affichés en ligne de commande.
Décryptage automatique du trafic SSL : Toutes les requêtes et réponses capturées sont présentées en texte clair.
Capturer le trafic HTTP avec les détails de latence
Exécutez la commande :
./kyanos watch http
Le résultat est le suivant :

Capturer le trafic Redis avec les détails de latence
Exécutez la commande :
./kyanos watch redis
Le résultat est le suivant :

Identifier les requêtes les plus lentes des 5 dernières secondes
Exécutez la commande :
./kyanos stat --slow --time 5
Le résultat est le suivant :

Kyanos prend actuellement en charge les versions du noyau 3.10 (à partir de 3.10.0-957) et 4.14 ou supérieures (avec des projets de support pour les versions entre 4.7 et 4.14 à l'avenir).
Vous pouvez vérifier votre version du noyau avec
uname -r.
Vous pouvez télécharger un binaire lié statiquement compatible avec les architectures amd64 et arm64 depuis la page des versions :
tar xvf kyanos_vx.x.x_linux_amd64.tar.gz
Ensuite, exécutez kyanos avec les privilèges root :
sudo ./kyanos watch
Si le tableau suivant apparaît :
🎉
Félicitations ! Kyanos a démarré avec succès.
L'utilisation la plus simple capture tous les protocoles actuellement supportés par Kyanos :
sudo ./kyanos watch
Chaque enregistrement requête-réponse est stocké sous forme de ligne dans un tableau, chaque colonne capturant les informations de base de cette requête. Vous pouvez utiliser les touches fléchées ou j/k pour naviguer dans les enregistrements :

Appuyez sur Entrée pour accéder à la vue détaillée :

Dans la vue détaillée, la première section affiche les Détails de latence. Chaque bloc représente un 'nœud' par lequel le paquet de données transite, comme le processus, la carte réseau et le tampon de socket. Chaque bloc inclut une valeur de temps indiquant le temps écoulé du nœud précédent à ce nœud, montrant le flux du processus d'envoi de la requête à la carte réseau, jusqu'à la copie de la réponse dans le tampon de socket, et enfin sa lecture par le processus, avec la durée de chaque étape affichée.
La deuxième section fournit le Contenu détaillé des requêtes et réponses, divisé en parties Requête et Réponse, et tronque le contenu au-delà de 1024 octets.
Pour une capture de trafic ciblée, comme le trafic HTTP :
./kyanos watch http
Vous pouvez affiner davantage pour capturer le trafic pour un chemin HTTP spécifique :
./kyanos watch http --path /abc
En savoir plus : Documentation Kyanos
[!IMPORTANT] Si vous rencontrez des problèmes ou des bogues en utilisant l'outil, n'hésitez pas à poser des questions dans le suivi des tickets.
Pendant le développement de kyanos, du code a été emprunté aux projets suivants :
Pour des demandes plus détaillées, vous pouvez utiliser les moyens de contact suivants :