
Kyanos es una herramienta de análisis de redes que utiliza eBPF. Puede visualizar el tiempo que los paquetes pasan en el kernel, capturar solicitudes/respuestas, y hacer que la resolución de problemas sea más eficiente.

简体中文 | Inglés
Kyanos es una herramienta de análisis de problemas de red basada en eBPF que te permite capturar solicitudes de red, como HTTP, Redis, MySQL, Kafka, MongoDB, RocketMQ y DNS. También te ayuda a analizar problemas de red anormales y solucionarlos rápidamente sin los complejos pasos de captura, descarga y análisis de paquetes.
# 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
Capacidades de Análisis Avanzado: A diferencia de tcpdump, que solo proporciona captura de paquetes detallada, Kyanos permite agregar métricas de paquetes capturados en varias dimensiones, proporcionando rápidamente los datos críticos más útiles para la resolución de problemas.
Imagina que el ancho de banda de tu servicio HTTP se satura repentinamente: ¿cómo analizarías rápidamente qué IPs y qué solicitudes lo están causando?
Con Kyanos, solo necesitas un comando: kyanos stat http --bigresp para encontrar los mayores tamaños de bytes de respuesta enviados a IPs remotas y ver datos específicos sobre las métricas de solicitud y respuesta.

Detalles de Latencia a Nivel de Kernel en Profundidad: En el mundo real, las consultas lentas a servicios remotos como Redis pueden ser difíciles de diagnosticar con precisión. Kyanos proporciona puntos de seguimiento del kernel desde la llegada de solicitudes/respuestas a la tarjeta de red hasta el búfer de socket del kernel, mostrando estos detalles en un formato visual. Esto te permite identificar exactamente qué etapa está causando retrasos.

Ligero y Sin Dependencias: Casi cero dependencias: solo un único archivo binario y un comando, con todos los resultados mostrados en la línea de comandos.
Descifrado Automático de Tráfico SSL: Todas las solicitudes y respuestas capturadas se presentan en texto plano.
Capturar Tráfico HTTP con Detalles de Latencia
Ejecuta el comando:
./kyanos watch http
El resultado es el siguiente:

Capturar Tráfico Redis con Detalles de Latencia
Ejecuta el comando:
./kyanos watch redis
El resultado es el siguiente:

Identificar las Solicitudes Más Lentas en los Últimos 5 Segundos
Ejecuta el comando:
./kyanos stat --slow --time 5
El resultado es el siguiente:

Kyanos actualmente soporta versiones de kernel 3.10 (desde 3.10.0-957) y 4.14 o superiores (con planes de soportar versiones entre 4.7 y 4.14 en el futuro).
Puedes verificar tu versión del kernel usando
uname -r.
Puedes descargar un binario enlazado estáticamente compatible con arquitecturas amd64 y arm64 desde la página de lanzamientos:
tar xvf kyanos_vx.x.x_linux_amd64.tar.gz
Luego, ejecuta kyanos con privilegios de root:
sudo ./kyanos watch
Si aparece la siguiente tabla:
🎉
¡Felicidades! Kyanos se ha iniciado correctamente.
El uso más simple captura todos los protocolos actualmente soportados por Kyanos:
sudo ./kyanos watch
Cada registro de solicitud-respuesta se almacena como una fila en una tabla, con cada columna capturando información básica sobre esa solicitud. Puedes usar las teclas de flecha o j/k para moverte hacia arriba y hacia abajo a través de los registros:

Presiona Enter para acceder a la vista de detalles:

En la vista de detalles, la primera sección muestra Detalles de Latencia. Cada bloque representa un "nodo" por el que pasa el paquete de datos, como el proceso, la tarjeta de red y el búfer de socket.
Cada bloque incluye un valor de tiempo que indica el tiempo transcurrido desde el nodo anterior hasta este nodo, mostrando el flujo del proceso desde que envía la solicitud a la tarjeta de red, hasta que la respuesta se copia al búfer de socket y finalmente es leída por el proceso, con la duración de cada paso mostrada.
La segunda sección proporciona Contenido Detallado de Solicitud y Respuesta, dividido en partes de Solicitud y Respuesta, y trunca el contenido de más de 1024 bytes.
Para la captura de tráfico específico, como tráfico HTTP:
./kyanos watch http
Puedes reducirlo aún más para capturar tráfico para una ruta HTTP específica:
./kyanos watch http --path /abc
Aprende más: Documentación de Kyanos
[!IMPORTANT]
Si encuentras algún problema o error al usar la herramienta, no dudes en hacer preguntas en el rastreador de incidencias.
Durante el desarrollo de kyanos, se tomó prestado código de los siguientes proyectos:
Para consultas más detalladas, puedes usar los siguientes métodos de contacto: