
Kyanos è uno strumento di analisi di rete che utilizza eBPF. Consente di visualizzare il tempo che i pacchetti trascorrono nel kernel, di acquisire richieste/risposte e rende la risoluzione dei problemi più efficiente.

简体中文 | Inglese
Kyanos è uno strumento di analisi dei problemi di rete basato su eBPF che consente di catturare richieste di rete, come HTTP, Redis, MySQL, Kafka, MongoDB, RocketMQ e DNS. Aiuta inoltre ad analizzare problemi di rete anomali e a risolvere rapidamente i problemi, senza i complessi passaggi di cattura, download e analisi dei pacchetti.
# 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
Capacità di analisi avanzate : a differenza di tcpdump, che fornisce solo una cattura dei pacchetti a grana fine, Kyanos supporta l'aggregazione delle metriche dei pacchetti catturati su varie dimensioni, fornendo rapidamente i dati critici più utili per il troubleshooting.
Immagina se la banda del tuo servizio HTTP venisse improvvisamente saturata: come faresti ad analizzare rapidamente which IPs e which requests che ne sono la causa?
Con Kyanos ti basta un solo comando: kyanos stat http --bigresp per trovare le maggiori dimensioni in byte delle risposte inviate agli IP remoti e visualizzare dati specifici sulle metriche di richiesta e risposta.

Dettagli approfonditi sulla latenza a livello di kernel: nel mondo reale, le query lente verso servizi remoti come Redis possono essere difficili da diagnosticare con precisione. Kyanos fornisce punti di traccia del kernel dall'arrivo delle richieste/risposte alla scheda di rete fino al buffer del socket del kernel, visualizzando questi dettagli in formato grafico. Questo consente di identificare esattamente quale fase causa i ritardi.

Leggero e senza dipendenze: quasi zero dipendenze: basta un singolo file binario e un comando, con tutti i risultati visualizzati nella riga di comando.
Decrittazione automatica del traffico SSL : tutte le richieste e le risposte catturate vengono presentate in chiaro.
Catturare il traffico HTTP con dettagli sulla latenza
Esegui il comando:
./kyanos watch http
Il risultato è il seguente:

Catturare il traffico Redis con dettagli sulla latenza
Esegui il comando:
./kyanos watch redis
Il risultato è il seguente:

Identificare le richieste più lente negli ultimi 5 secondi
Esegui il comando:
./kyanos stat --slow --time 5
Il risultato è il seguente:

Kyanos attualmente supporta le versioni del kernel 3.10 (da 3.10.0-957) e 4.14 o successive (con piani per supportare in futuro le versioni tra 4.7 e 4.14).
Puoi controllare la versione del tuo kernel usando
uname -r.
Puoi scaricare un binario staticamente linkato compatibile con le architetture amd64 e arm64 dalla pagina delle release:
tar xvf kyanos_vx.x.x_linux_amd64.tar.gz
Quindi, esegui kyanos con privilegi di root:
sudo ./kyanos watch
Se appare la tabella seguente:
🎉
Congratulazioni! Kyanos è stato avviato correttamente.
L'uso più semplice cattura tutti i protocolli attualmente supportati da Kyanos:
sudo ./kyanos watch
Ogni record richiesta-risposta è memorizzato come riga in una tabella, con ogni colonna che cattura le informazioni di base su quella richiesta. Puoi usare i tasti freccia o j/k per spostarti su e giù tra i record:

Premi Enter per accedere alla vista dei dettagli:

Nella vista dei dettagli, la prima sezione mostra i Dettagli sulla latenza. Ogni blocco rappresenta un "nodo" attraverso cui passa il pacchetto di dati, come il processo, la scheda di rete e il buffer del socket.
Ogni blocco include un valore di tempo che indica il tempo trascorso dal nodo precedente a questo nodo, mostrando il flusso del processo dall'invio della richiesta alla scheda di rete, fino alla copia della risposta nel buffer del socket e alla sua lettura finale da parte del processo, con la durata di ogni passaggio visualizzata.
La seconda sezione fornisce il Contenuto dettagliato di richiesta e risposta, suddiviso in parti Richiesta e Risposta, e tronca il contenuto oltre i 1024 byte.
Per la cattura mirata del traffico, come il traffico HTTP:
./kyanos watch http
Puoi restringere ulteriormente la cattura per intercettare il traffico di uno specifico percorso HTTP:
./kyanos watch http --path /abc
Scopri di più: Documentazione di Kyanos
[!IMPORTANT]
Se incontri problemi o bug durante l'utilizzo dello strumento, non esitare a porre domande nel tracker dei problemi.
Durante lo sviluppo di kyanos, parte del codice è stata presa in prestito dai seguenti progetti:
Per richieste più dettagliate, puoi utilizzare i seguenti metodi di contatto: