
简体中文 | English
Kyanos 是一个网络流量采集和分析工具,它提供如下特性:
# 根据 pid 过滤
./kyanos watch --pids 1234
# 根据容器 id 过滤
./kyanos watch --container-id abc
# 根据 redis 的 key 过滤
./kyanos watch redis --keys my-key1,my-key2
# 根据响应字节数过滤
./kyanos watch --resp-size 10000
哪些 ip 的 哪些请求 造成的?kyanos stat http --bigresp 即可找到发送给哪些远程 ip 的响应字节数最大,并且还能够发现请求响应的具体数据。


curl http://www.baidu.com
命令的耗时记录,你可以发现 kyanos 记录了请求经过容器网卡、宿主机网卡,响应经过宿主机网卡、容器网卡、Socket 缓冲区每个步骤的耗时。抓取 HTTP 流量并且获取耗时细节
执行命令:
./kyanos watch http
演示结果如下:

抓取 Redis 流量获取耗时细节
执行命令:
./kyanos watch redis
演示结果如下:

找到 5s 内最慢的几个请求
执行命令:
./kyanos stat --slow --time 5
演示结果如下:

Kyanos 当前支持 3.10(3.10.0-957 以上)及 4.14 以上版本内核(4.7 版本到 4.14 版本之间的后续计划支持)。
通过
uname -r查看内核版本
你可以从 release page 中下载以静态链接方式编译的适用于 amd64 和 arm64 架构的二进制文件:
tar xvf kyanos_vx.x.x_linux_amd64.tar.gz
然后以 root 权限 执行如下命令:
sudo ./kyanos watch
如果显示了下面的表格:
🎉 恭喜你,kyanos 启动成功了。
最简单的用法如下,抓取所有 kyanos 当前能够识别的协议
sudo ./kyanos watch
每个请求响应记录会记录在表格中的一行,每列记录这个请求的基本信息。你可以通过方向键或者 j/k 上下移动来选择记录:

按下 enter 进入详情界面:

详情界面里第一部分是
耗时详情,每一个方块代表数据包经过的节点,比如这里有进程、网卡、Socket 缓冲区等。
每个方块下面有一个耗时,这里的耗时指从上个节点到这个节点经过的时间。可以清楚的看到请求从进程发送到网卡,响应再从网卡复制到 Socket 缓冲区并且被进程读取的流程和每一个步骤的耗时。
第二部分是 请求响应的具体内容,分为 Request 和 Response 两部分,超过 1024 字节会截断展示。
抓取流量时一般会更有针对性,比如抓取 HTTP 流量:
./kyanos watch http
更进一步,你可能只想抓取某个 HTTP Path 的流量:
./kyanos watch http --path /abc
了解更多,请参考文档:Kyanos Docs
[!IMPORTANT]
如果你遇到了任何使用上的问题、bug 都可以在 issue 中提问。
在开发 kyanos 的过程中,部分代码借用了以下项目:
如果你有更详细的问题需要咨询,可以用以下联系方式: