hengyoush/kyanos

GitHub: hengyoush/kyanos

基于 eBPF 的轻量级网络分析工具,可视化数据包在内核中的延迟细节并自动解析 L7 协议,帮助快速定位网络性能瓶颈。

Stars: 4989 | Forks: 226

# kyanos
一条命令找出最慢的请求并定位原因。
![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b4cd400039235943.gif)
[![GitHub last commit](https://img.shields.io/github/last-commit/hengyoush/kyanos)](#) [![GitHub release](https://img.shields.io/github/v/release/hengyoush/kyanos)](#) [![Test](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/2e63486feb235944.svg)](https://github.com/hengyoush/kyanos/actions/workflows/test.yml) hengyoush%2Fkyanos | Trendshift [![Featured on Hacker News](https://hackerbadge.now.sh/api?id=42154583)](https://news.ycombinator.com/item?id=42154583) Featured|HelloGitHub
[简体中文](./README_CN.md) | English - [英文文档](https://kyanos.io/) ## 目录 - [kyanos](#kyanos) - [目录](#table-of-contents) - [什么是 kyanos](#what-is-kyanos) - [示例](#examples) - [❗ 系统要求](#-requirements) - [🎯 如何获取 kyanos](#-how-to-get-kyanos) - [📝 文档](#-documentation) - [⚙ 用法](#-usage) - [🏠 如何构建](#-how-to-build) - [路线图](#roadmap) - [🤝 反馈与贡献](#-feedback-and-contributions) - [🙇‍ 特别感谢](#-special-thanks) - [🗨️ 联系方式](#️-contacts) - [Star 历史](#star-history) ## 什么是 kyanos Kyanos 是一个**基于 eBPF** 的网络问题分析工具,它可以让你 捕获网络请求,例如 HTTP、Redis 和 MySQL 请求。 它还能帮助你分析网络异常问题并快速排查故障, 无需经历抓包、下载和分析等复杂步骤。 1. **强大的流量过滤**:不仅可以根据传统的 IP/端口信息进行过滤,还可以按进程/容器、L7 协议 信息、请求/响应字节大小、延迟等进行过滤。 ``` # 按 pid 过滤 ./kyanos watch --pids 1234 # 按 container id 过滤 ./kyanos watch --container-id abc # 按 Redis key 过滤 ./kyanos watch redis --keys my-key1,my-key2 # 按 response byte size 过滤 ./kyanos watch --resp-size 10000 ``` 2. **高级分析能力**:与仅提供细粒度抓包功能的 tcpdump 不同,Kyanos 支持 将捕获的数据包指标按各种维度进行聚合,快速提供对故障排查 最有价值的关键数据。 想象一下,如果你的 HTTP 服务带宽突然被打满——你会如何 快速分析是 `哪些 IP` 和 `哪些请求` 导致的? 使用 Kyanos,你只需要一条命令:`kyanos stat http --bigresp` 即可 找出向远程 IP 发送的最大响应字节大小,并查看请求和响应指标的 具体数据。 ![kyanos find big response](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/44a5f52c1d235946.gif) 3. **深入的内核级延迟细节**:在实际场景中,对 Redis 等远程服务的慢查询可能难以精确诊断。Kyanos 提供了从请求/响应到达网卡到内核 socket 缓冲区的内核追踪点,并以 可视化格式显示这些细节。这使你能够准确识别是哪个阶段导致了 延迟。 ![kyanos time detail](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/f2754a2c66235947.jpg) 4. **轻量且无依赖**:几乎零依赖——只需一个 二进制文件和一条命令,所有结果都显示在命令行中。 5. **自动 SSL 流量解密**:所有捕获的请求和响应 都以明文形式呈现。 ## 示例 **捕获 HTTP 流量并查看延迟详情** 运行命令: ``` ./kyanos watch http ``` 结果如下: ![kyanos quick start watch http](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/098635fd57235951.gif) **捕获 Redis 流量并查看延迟详情** 运行命令: ``` ./kyanos watch redis ``` 结果如下: ![kyanos quick start watch redis](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/422f26c367235959.gif) **找出过去 5 秒内最慢的请求** 运行命令: ``` ./kyanos stat --slow --time 5 ``` 结果如下: ![kyanos stat slow](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/6c02ee041c000001.gif) ## ❗ 系统要求 Kyanos 目前支持内核版本 3.10(从 3.10.0-957 起)和 4.14 及 以上版本(计划在未来支持 4.7 到 4.14 之间的版本)。 ## 🎯 如何获取 kyanos 你可以从 [发布页面](https://github.com/hengyoush/kyanos/releases) 下载兼容 amd64 和 arm64 架构的静态链接二进制文件: ``` tar xvf kyanos_vx.x.x_linux_amd64.tar.gz ``` 然后,使用 **root 权限** 运行 kyanos: ``` sudo ./kyanos watch ``` 如果出现以下表格: ![kyanos quick start success](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/3d3bc5a52d000002.png) 🎉 恭喜!Kyanos 已成功启动。 ## 📝 文档 [英文文档](https://kyanos.io/) ## ⚙ 用法 最简单的用法是捕获 Kyanos 当前支持的所有协议: ``` sudo ./kyanos watch ``` 每个请求-响应记录在表中显示为一行,每一列 捕获该请求的基本信息。你可以使用方向键或 `j/k` 在记录中上下移动: ![kyanos watch result](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e9ad8e4fa1000006.jpg) 按 `Enter` 进入详情视图: ![kyanos watch result detail](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/d3a6e635d0000008.jpg) 在详情视图中,第一部分显示 **延迟详情**。每个块 代表数据包经过的一个“节点”,例如进程、 网卡和 socket 缓冲区。 每个块包含一个时间值,表示从上一个 节点到该节点所经过的时间,展示了从进程发送请求 到网卡,到响应被复制到 socket 缓冲区,以及 最后被进程读取的流程,并显示每一步的耗时。 第二部分提供 **详细的请求和响应内容**,分为 请求和响应部分,并截断超过 1024 字节的内容。 针对特定流量捕获,例如 HTTP 流量: ``` ./kyanos watch http ``` 你可以进一步缩小范围,捕获特定 HTTP 路径的流量: ``` ./kyanos watch http --path /abc ``` 了解更多:[Kyanos 文档](https://kyanos.io/) ## 🏠 如何构建 👉 [COMPILATION.md](./COMPILATION.md) ## 路线图 Kyanos 路线图展示了 Kyanos 的未来计划。如果你有功能 请求或想要优先实现特定功能,请在 GitHub 上提交 issue。 _1.6.0_ 1. 支持 postgresql 协议解析。 2. 支持 HTTP2 协议解析。 3. 支持 DNS 协议解析。 4. 支持 GnuTLS。 ## 🤝 反馈与贡献 ## 🙇‍ 特别感谢 在 kyanos 的开发过程中,借鉴了以下项目的一些代码: - [eCapture](https://ecapture.cc/zh/) - [pixie](https://github.com/pixie-io/pixie) - [ptcpdump](https://github.com/mozillazg/ptcpdump) ## 🗨️ 联系方式 如有更详细的咨询,你可以使用以下联系方式: - **我的邮箱:** [hengyoush1@163.com](mailto:hengyoush1@163.com) - **我的博客:** [http://blog.deadlock.cloud](http://blog.deadlock.cloud/) ## Star 历史 [![Star History Chart](https://api.star-history.com/svg?repos=hengyoush/kyanos&type=Date)](https://star-history.com/#hengyoush/kyanos&Date) [返回顶部](#top)
标签:API集成, Docker镜像, HTTP分析, IP 地址批量处理, Kyanos, Linux工具, Mutation, MySQL监控, Redis监控, 内核追踪, 可观测性, 可视化, 安全渗透, 客户端加密, 延迟分析, 性能监控, 故障排查, 日志审计, 深度包检测, 端口探测, 系统分析, 网络分析, 网络安全分析, 网络延迟, 网络调试, 自动化, 请求追踪, 运维工具, 防御绕过