
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.

简体中文 | Русский
Kyanos — это инструмент анализа сетевых проблем на основе eBPF, который позволяет захватывать сетевые запросы, такие как HTTP, Redis, MySQL, Kafka, MongoDB, RocketMQ и DNS. Он также помогает анализировать аномальные сетевые проблемы и быстро устранять неполадки без сложных этапов захвата пакетов, скачивания и анализа.
# Фильтрация по pid
./kyanos watch --pids 1234
# Фильтрация по id контейнера
./kyanos watch --container-id abc
# Фильтрация по ключу Redis
./kyanos watch redis --keys my-key1,my-key2
# Фильтрация по размеру ответа в байтах
./kyanos watch --resp-size 10000
Расширенные возможности анализа: В отличие от tcpdump, который предоставляет только детальный захват пакетов, Kyanos поддерживает агрегацию метрик захваченных пакетов по различным измерениям, быстро предоставляя наиболее полезные для диагностики данные.
Представьте, что пропускная способность вашего HTTP-сервиса внезапно исчерпана — как быстро проанализировать, какие IP и какие запросы это вызывают?
С Kyanos нужна всего одна команда: kyanos stat http --bigresp, чтобы найти наибольшие размеры ответов в байтах, отправленные на удалённые IP, и просмотреть конкретные данные по метрикам запросов и ответов.

Детали задержек на уровне ядра: На практике медленные запросы к удалённым сервисам, таким как Redis, бывает сложно точно диагностировать. Kyanos предоставляет точки трассировки ядра от момента поступления запросов/ответов на сетевую карту до буфера сокета ядра, отображая эти детали в визуальном формате. Это позволяет точно определить, на каком этапе возникают задержки.

Легковесность и отсутствие зависимостей: Почти нулевые зависимости — всего один бинарный файл и одна команда, все результаты отображаются в командной строке.
Автоматическая расшифровка SSL трафика: Все захваченные запросы и ответы представляются в виде обычного текста.
Захват HTTP трафика с деталями задержек
Выполните команду:
./kyanos watch http
Результат выглядит следующим образом:

Захват Redis трафика с деталями задержек
Выполните команду:
./kyanos watch redis
Результат выглядит следующим образом:

Определите самые медленные запросы за последние 5 секунд
Выполните команду:
./kyanos stat --slow --time 5
Результат выглядит следующим образом:

Kyanos в настоящее время поддерживает версии ядра 3.10 (от 3.10.0-957) и 4.14 или выше (в будущем планируется поддержка версий от 4.7 до 4.14).
Вы можете проверить версию ядра с помощью
uname -r.
Вы можете загрузить статически скомпонованный бинарный файл, совместимый с архитектурами amd64 и arm64, на странице релизов:
tar xvf kyanos_vx.x.x_linux_amd64.tar.gz
Затем запустите kyanos с правами root:
sudo ./kyanos watch
Если появится следующая таблица:
🎉
Поздравляем! Kyanos успешно запущен.
Простейшее использование захватывает все протоколы, поддерживаемые в данный момент Kyanos:
sudo ./kyanos watch
Каждая запись запроса-ответа сохраняется в виде строки таблицы, где каждый столбец содержит базовую информацию об этом запросе. Вы можете использовать клавиши со стрелками или j/k для перемещения по записям вверх и вниз:

Нажмите Enter, чтобы перейти к детальному просмотру:

В детальном просмотре первый раздел показывает Детали задержек. Каждый блок представляет собой «узел», через который проходит пакет данных, например, процесс, сетевая карта и буфер сокета.
Каждый блок содержит значение времени, указывающее время, прошедшее от предыдущего узла до этого узла, показывая процесс от отправки запроса процессом до сетевой карты, копирования ответа в буфер сокета и, наконец, чтения процессом, с отображением длительности каждого шага.
Второй раздел предоставляет Подробное содержимое запроса и ответа, разделённое на части запроса и ответа, а содержимое обрезается, если превышает 1024 байта.
Для захвата целевого трафика, например HTTP:
./kyanos watch http
Можно сузить до захвата трафика для определённого HTTP-пути:
./kyanos watch http --path /abc
Узнайте больше: Kyanos Docs
[!IMPORTANT]
Если вы столкнулись с какими-либо проблемами или ошибками при использовании инструмента, пожалуйста, задавайте вопросы в трекере проблем (issue tracker).
В процессе разработки kyanos был заимствован код из следующих проектов:
Для более подробных вопросов вы можете использовать следующие контактные данные: