
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.

简体中文 | English
Kyanos é uma ferramenta de análise de problemas de rede baseada em eBPF que permite capturar requisições de rede, como requisições HTTP, Redis, MySQL, Kafka, MongoDB, RocketMQ e DNS. Ela também ajuda a analisar problemas anormais de rede e solucionar rapidamente problemas sem as etapas complexas de captura, download e análise de pacotes.
# Filtrar por pid
./kyanos watch --pids 1234
# Filtrar por id do contêiner
./kyanos watch --container-id abc
# Filtrar por chave Redis
./kyanos watch redis --keys my-key1,my-key2
# Filtrar por tamanho de bytes da resposta
./kyanos watch --resp-size 10000
Capacidades de Análise Avançadas: Diferente do tcpdump, que fornece apenas
captura de pacotes em nível granular, o Kyanos suporta a agregação de métricas de pacotes capturados
em várias dimensões, fornecendo rapidamente os dados críticos mais úteis
para solução de problemas.
Imagine que a largura de banda do seu serviço HTTP de repente atinge o máximo—como você
analisaria rapidamente quais IPs e quais requisições estão causando isso?
Com o Kyanos, você precisa apenas de um comando: kyanos stat http --bigresp para encontrar
os maiores tamanhos de bytes de resposta enviados para IPs remotos e visualizar dados específicos de
métricas de requisição e resposta.

Detalhes de Latência em Nível de Kernel: No mundo real, consultas lentas a serviços remotos como Redis podem ser desafiadoras de diagnosticar com precisão. O Kyanos fornece pontos de rastreamento do kernel desde a chegada das requisições/respostas na placa de rede até o buffer socket do kernel, exibindo esses detalhes em um formato visual. Isso permite identificar exatamente qual estágio está causando atrasos.

Leve e Sem Dependências: Quase zero dependências—apenas um único arquivo binário e um comando, com todos os resultados exibidos na linha de comando.
Descriptografia Automática de Tráfego SSL: Todas as requisições e respostas capturadas são apresentadas em texto simples.
Capture Tráfego HTTP com Detalhes de Latência
Execute o comando:
./kyanos watch http
O resultado é o seguinte:

Capture Tráfego Redis com Detalhes de Latência
Execute o comando:
./kyanos watch redis
O resultado é o seguinte:

Identifique as Requisições Mais Lentas nos Últimos 5 Segundos
Execute o comando:
./kyanos stat --slow --time 5
O resultado é o seguinte:

O Kyanos atualmente suporta versões do kernel 3.10 (a partir de 3.10.0-957) e 4.14 ou superiores (com planos de suportar versões entre 4.7 e 4.14 no futuro).
Você pode verificar a versão do seu kernel usando
uname -r.
Você pode baixar um binário estaticamente ligado compatível com arquiteturas amd64 e arm64 na página de releases:
tar xvf kyanos_vx.x.x_linux_amd64.tar.gz
Em seguida, execute o kyanos com privilégio de root:
sudo ./kyanos watch
Se a seguinte tabela aparecer:
🎉
Parabéns! O Kyanos foi iniciado com sucesso.
O uso mais simples captura todos os protocolos atualmente suportados pelo Kyanos:
sudo ./kyanos watch
Cada registro de requisição-resposta é armazenado como uma linha em uma tabela, com cada coluna
capturando informações básicas sobre aquela requisição. Você pode usar as teclas de seta ou
j/k para navegar para cima e para baixo pelos registros:

Pressione Enter para acessar a visualização de detalhes:

Na visualização de detalhes, a primeira seção mostra os Detalhes de Latência. Cada bloco
representa um "nó" pelo qual o pacote de dados passa, como o processo, placa de rede
e buffer socket.
Cada bloco inclui um valor de tempo indicando o tempo decorrido do nó anterior
até este nó, mostrando o fluxo do processo desde o envio da requisição
até a placa de rede, a cópia da resposta para o buffer socket e, finalmente,
a leitura pelo processo, com a duração de cada etapa exibida.
A segunda seção fornece o Conteúdo Detalhado da Requisição e Resposta, dividido em partes de Requisição e Resposta, e trunca conteúdo acima de 1024 bytes.
Para captura de tráfego direcionada, como tráfego HTTP:
./kyanos watch http
Você pode restringir ainda mais para capturar tráfego de um caminho HTTP específico:
./kyanos watch http --path /abc
Saiba mais: Kyanos Docs
[!IMPORTANT]
Se você encontrar algum problema ou bug ao usar a ferramenta, sinta-se à vontade para fazer perguntas no rastreador de issues.
Durante o desenvolvimento do kyanos, parte do código foi emprestada dos seguintes projetos:
Para consultas mais detalhadas, você pode usar os seguintes métodos de contato: