Kyanos 网络诊断工具全景指南:eBPF 驱动的 watch / stat / overview 三大命令实战
Kyanos 网络诊断工具全景指南eBPF 驱动的 watch / stat / overview 三大命令实战【免费下载链接】kyanosKyanos is a networking analysis tool using eBPF. It can visualize the time packets spend in the kernel, capture requests/responses, makes troubleshooting more efficient.项目地址: https://gitcode.com/GitHub_Trending/ky/kyanos本文以 Kyanos 官方文档首页docs/index.md对项目的定位描述为主线系统梳理 Kyanos 的核心能力矩阵——七层协议抓包、多维流量过滤、聚合统计分析、容器网络监控与内核级时延可视化并结合仓库中cmd/命令实现与agent/分析模块源码给出可直接落地的命令级实操指南。读完本文你将掌握watch抓包、stat聚合分析与overview依赖洞察三大命令的完整用法并能结合源码理解其底层原理。认识 Kyanos一句话定位与设计哲学Kyanos 是一个基于 eBPF 的网络流量分析工具官方文档首页将其定位为 A Simple Powerful Network Tracing Tool核心价值在于可视化数据包在内核中的耗时并在命令行中完成抓包与分析Visualize the time packets spend in the kernel, watch analyze in command line。在 docs/index.md 首页的 hero 与 feature 卡片中项目官方总结出六大核心特性本文后续章节将逐一展开特性一句话说明对应文档章节 Easy-to-use聚焦七层协议一条命令抓取并分析 HTTP/Redis/MySQL/Kafka/MongoDB/RocketMQ/DNSdocs/how-to.md Advanced Traffic Filtering支持按协议字段如 HTTP Path、Redis Command、PID、容器 ID、K8s Pod 名过滤docs/watch.md Powerful Aggregation Analysis按远端 IP、协议等多维度自动聚合快速得到特定信息docs/stat.md Container Network Monitoring容器化环境下可测量从容器网卡到宿主机网卡的时延docs/watch.md Intuitive TUI纯命令行可视化输出无需 tcpdump 式的文件下载与分析步骤docs/how-to.md Lightweight and Compatible零外部依赖兼容内核 3.10 至最新版本docs/quickstart.md注本仓库docs/目录下同时提供英文与简体中文版本见 README_CN.md中文用户可直接阅读中文文档。为什么需要 Kyanos传统抓包工具的五重痛点官方文档 docs/what-is-kyanos.md 开篇即对比了传统网络排查工具tcpdump、iftop、netstat的局限这些痛点正是 Kyanos 的设计出发点难以按协议信息过滤例如抓取 HTTP 协议中特定 Path 的包tcpdump 无法直接实现需要借助 Wireshark/tshark 二次过滤难以按进程/容器过滤单机多进程或多容器部署时无法只针对特定进程或容器的流量抓包排查效率低典型流程是生产环境 tcpdump 抓包 → 下载 pcap → 本地 Wireshark 分析耗时巨大分析能力有限tcpdump 只提供基础抓包iftop/netstat 只有粗粒度监控难以定位根因无法解密加密流量SSL 等协议请求无法以明文形式查看。而 Kyanos 的应对方案是五件套强大的流量过滤、多维度聚合分析、内核级时延详情、零依赖轻量部署、SSL 流量自动解密。其中 SSL 解密能力在源码中有完整的体系支撑——仓库bpf/目录下包含多个 OpenSSL 版本探针如 openssl_3_4_0.bpf.c、openssl_1_1_1j.bpf.c配合 agent/uprobe/ 模块实现函数级探针注入从而在用户态将 TLS 密文还原为明文。安装与运行环境要求内核版本兼容性根据 docs/quickstart.md 的说明Kyanos 对内核版本的要求按架构区分amd643.x内核版本3.10.0-957 及以上4.x内核版本4.14 及以上5.x、6.x完全支持arm645.5 及以上仓库 README.md 补充说明当前支持内核 3.10自 3.10.0-957 起与 4.14 以上版本并计划未来支持 4.7 至 4.14 之间的版本。可通过uname -r查看当前内核版本。这一兼容性设计的底气来自仓库中的bpf/custom-archive/目录该目录内置了 CentOS 7/8、Ubuntu 18.04/20.04 各内核版本的 BTF 文件如3.10.0-1160.el7.x86_64.btf、5.4.0-91-generic.btf等加上 bpf/btfgen.sh 生成的 btfgen 脚本保证了在缺乏 BTF 的旧内核上也能加载 eBPF 程序。安装步骤从官方 release 页面下载静态链接的二进制兼容 amd64 与 arm64tar xvf kyanos_vx.x.x_linux_amd64.tar.gz然后以root 权限运行sudo ./kyanos watch如果终端出现请求-响应记录表格即表示 Kyanos 启动成功。如果启动失败可参考 docs/faq.md 排查或到 issue 中反馈。核心命令之一watch——抓取请求-响应并查看内核级时延基本用法与界面watch是 Kyanos 最基础的命令负责按指定条件抓取网络流量并自动解析为请求-响应记录docs/how-to.md。最简单的用法是抓取当前支持的所有协议./kyanos watch当前支持解析的协议在 cmd/watch.go 中以supportedProtocols列表形式定义http、redis、mysql、rocketmq、kafka、mongodb、dns。也可用./kyanos watch --list直接查看对应 cmd/watch.go 中的--list标志。执行后每个请求-响应记录以表格行呈现各列含义如下源自 docs/watch.md列名说明示例id表格序号Connection该请求-响应所属连接10.0.4.9:44526 169.254.0.4:80Proto请求-响应使用的协议HTTPTotalTime该请求-响应总耗时毫秒ReqSize请求大小字节RespSize响应大小字节Net/Internal作为客户端时为网络时延作为服务端时为内部处理时间ReadSocketTime客户端从 Socket 缓冲区读取响应耗时服务端为从缓冲区读取请求耗时界面操作方式用↑/↓或k/j键上下移动记录按数字键排序按Enter进入详情视图。默认抓取 100 条记录可用--max-records调整该默认值定义在 cmd/watch.go。详情视图内核级时延可视化详情视图包含三个部分Latency Details时延详情每个块代表数据包经过的一个节点进程、网卡、Socket 缓冲区等块下方标注了从上一节点到该节点的耗时。你可以清晰看到请求从进程发出到网卡、响应从网卡复制到 Socket 缓冲区、再到进程读取的完整过程及各阶段耗时。请求与响应的基本信息包括请求/响应的开始结束时间、大小等。请求与响应的具体内容分为 Request 与 Response 两段超过1024 字节的内容会被截断显示可通过--max-print-bytes调整上限cmd/watch.go。如果想进一步看到网卡到 TCP 缓冲区拷贝与缓冲区到进程读取两个阶段的时延可添加--trace-socket-event选项默认关闭定义于 cmd/watch.go时延图中会额外出现 Socket 块。--trace-dev-event与--trace-ssl-event默认开启分别负责采集网卡设备层事件与 SSL 数据事件cmd/watch.go。多维过滤体系watch最强大的能力在于过滤。所有过滤选项可以自由组合从网络层到协议层逐级收敛流量。按 IP 与端口过滤网络层 L3/L4过滤条件命令行标志示例本地端口--local-ports--local-ports 6379,16379远端端口--remote-ports--remote-ports 6379,16379远端 IP--remote-ips--remote-ips 10.0.4.5,10.0.4.2客户端/服务端--side--side client或--side server这些网络层过滤标志在 cmd/root.go 中作为根命令的持久化标志注册即对所有子命令生效。按进程/容器过滤过滤条件命令行标志示例进程 PID 列表--pids--pids 12345,12346逗号分隔进程名--comm--comm curl容器 ID--container-id--container-id xx容器名--container-name--container-name foobarK8s Pod 名--pod-name--pod-name nginx-7bds23212-23s1s.default格式 NAME.NAMESPACE容器过滤标志同样注册在 cmd/root.go。容器信息获取依赖容器运行时端点支持 Docker、containerd 与 CRI 运行时对应源码为 agent/metadata/container/docker/、agent/metadata/container/containerd/ 与 agent/metadata/k8s/cri.go。值得一提的是在容器化环境中Kyanos 还会展示容器网卡到宿主机网卡之间的时延这正是首页 feature 中 Container Network Monitoring 能力的体现。按请求-响应通用信息过滤过滤条件命令行标志示例请求-响应时延--latency--latency 100只观察超过 100ms 的记录请求大小--req-size--req-size 1024大于 1024 字节响应大小--resp-size--resp-size 1024大于 1024 字节按协议专属字段过滤将协议名作为子命令即可只抓取该协议流量再叠加该协议的专属过滤条件HTTP--path /foo/bar路径精确匹配、--path-prefix /foo/bar路径前缀、--path-regex \/foo\/bar\/.*路径正则、--host www.baidu.comHost、--method GET方法Redis--command GET,SET命令、--keys foo,bar键、--key-prefix foo:bar键前缀RocketMQpreview--request-codes 10,11请求码、--languages Java,Go语言Kafkapreview--topic quickstart-eventsTopic、--producer/--consumer生产/消费方向指定 topic 时默认均为 true、--apikeys 10,11API KeyDNSpreview--host example.com域名MongoDB / MySQL已支持协议抓取条件过滤仍在开发中例如只抓取访问/foo/bar路径的 HTTP 请求kyanos watch http --path /foo/bar组合使用示例来自 docs/watch.md 官方文档./kyanos watch redis --keys foo,bar --remote-ports 6379 --pid 12345JSON 输出preview如果需要程序化处理抓取结果可使用--json-output标志cmd/watch.go# 输出到终端 kyanos watch --json-outputstdout # 输出到文件 kyanos watch --json-output/path/to/custom.json每条请求-响应记录包含请求/响应时间戳、连接详情地址与端口、协议专属信息、详细时延指标、请求与响应内容。完整格式规范见 docs/json-output.md。核心命令之二stat——多维度聚合分析设计动机与基本用法watch的输出是逐条请求-响应的细粒度视图适合底层分析但当需要回答所有服务器都慢还是只有某一台慢哪个客户端 IP 占用了最大带宽这类全局性问题时就需要stat命令对大量请求-响应做聚合统计docs/stat.md。使用stat的核心是明确两件事关心的指标--metric与聚合维度--group-by。例如要分析HTTP 请求慢是所有服务器都慢还是个别服务器慢指标是响应时间、聚合维度是远端 IP./kyanos stat --metric total-time --group-by remote-ip等价于短写形式./kyanos stat -m t -g remote-ip其中-m是--metric的简写、t是total-time的简写、-g是--group-by的简写。命令中--metric、--group-by的解析与校验逻辑位于 cmd/stat.go合法的指标与维度均在源码中有硬编码校验。支持的指标与聚合维度stat当前支持的指标--metric源码见 cmd/stat.go指标短标志长标志总耗时ttotal-time响应大小prespsize请求大小qreqsize网络时延nnetwork-time内部处理时间iinternal-timeSocket 读取耗时ssocket-time源码细节network-time与internal-time在 cmd/stat.go 中均映射到 BlackBoxDuration 指标区别在于前者强制Side ClientSide、后者强制Side ServerSide——这正是 Net/Internal 列客户端看网络、服务端看内部处理语义的源码级来源。stat支持的聚合维度--group-by聚合维度取值按连接conn远端 IPremote-ip远端端口remote-port本地端口local-portL7 协议protocolHTTP 路径http-pathRedis 命令redis-command全部聚合none聚合时还支持二级分组--group-by的值若包含/则/前为主维度、后为子维度cmd/stat.go。另外代码中还针对 HTTP 协议固定启用了HttpPath分类器、针对 Redis 固定启用了RedisCommand分类器cmd/stat.go因此http-path与redis-command维度才能成立。这些分类器Classfier的实现位于 agent/analysis/common/classfier.go 与 agent/analysis/classfier.go。结果解读与下钻stat结果表中除序号外的第二列即为--group-by指定的维度如remote-ip后续列max、avg、p50等表示该维度下聚合记录中指标此处为 total-time的最大值、平均值与 50 分位值。百分位计算实现在 agent/analysis/percentile.go。对某一行按Enter可下钻查看该维度下的具体请求-响应列表视图与watch相同每个记录还可继续Enter查看时延与内容详情。快速分析三件套slow / bigreq / bigresp如果记不住各种选项stat提供了三个快捷模式定义于 cmd/stat.go--slow分析慢请求--bigreq分析大请求--bigresp分析大响应例如快速定位哪个远端 IP 的 HTTP 请求最慢./kyanos stat http --slow找出哪个远端 IP 的请求最大 / 响应最大./kyanos stat http --bigreq ./kyanos stat http --bigresp--time 10可指定采集 10 秒stat默认采集 10 秒可按ctrlc提前结束。注意stat支持watch的全部过滤选项例如./kyanos stat http --slow --path /abc核心命令之三overview——全局依赖洞察beta当需要快速了解一台机器依赖了哪些外部资源及其时延时overview命令一条命令即可完成docs/what-is-kyanos.md 标记为 beta 功能。overview的实现非常简洁cmd/overview.go它本质上复用了stat的分析链路只是强制将聚合维度设置为remote-ip/protocol-adaptive——即按远端 IP 分组、并按协议自适应子分组overview true groupBy remote-ip/protocol-adaptive基本用法sudo kyanos overview可选的--metric标志与stat相同默认t/total-time用于指定统计指标。三大命令的协作关系与适用场景综合 docs/how-to.md 的总结三个子命令形成完整的排查闭环watch按条件抓取流量并解析为请求-响应记录查看详细内容与内核各阶段时延stat在 watch 的基础上对请求-响应做聚合统计回答哪台服务器慢、哪个客户端占带宽等全局问题overview快速盘点整机的外部依赖资源与其时延适合服务治理与容量评估。三者共用同一套过滤选项体系网络层/进程容器层/协议层且均以 TUI 表格呈现、支持数字键排序与 Enter 下钻学习成本可平滑迁移。进一步阅读五步快速上手 docs/how-to.mdwatch 过滤与详情视图完整说明 docs/watch.mdstat 聚合分析完整说明 docs/stat.md安装环境要求与 FAQ docs/quickstart.md、 docs/faq.md从源码编译 COMPILATION.md中文版项目说明 README_CN.md源码入口与命令定义 cmd/root.go、 cmd/watch.go、 cmd/stat.go、 cmd/overview.go【免费下载链接】kyanosKyanos is a networking analysis tool using eBPF. It can visualize the time packets spend in the kernel, capture requests/responses, makes troubleshooting more efficient.项目地址: https://gitcode.com/GitHub_Trending/ky/kyanos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

CSS @property 实战:让 CSS 变量支持 transition 平滑动画

CSS @property 实战:让 CSS 变量支持 transition 平滑动画

1. 问题现场:transition 写在 CSS 变量上为什么瞬间跳变1.1 一段最典型的翻车代码先说我前几天遇到的事。当时我在调一个卡片 hover 效果,想让背景色从蓝色平滑过渡到橙色,很自然的写法是定义两个 CSS 变量,再给transition加上去&…

2026/9/18 18:50:32 阅读更多 →
Vue项目播放RTMP流的正确姿势:HTTP-FLV方案详解

Vue项目播放RTMP流的正确姿势:HTTP-FLV方案详解

简介:本资源是一份面向Vue前端开发者的RTMP视频流播放实战指南,专为解决H5原生video标签无法播放RTMP协议流这一常见痛点而设计,适用于中初级Vue项目开发者及音视频功能集成需求者。内容以PDF形式呈现,共1个文件,大小仅…

2026/9/18 18:50:32 阅读更多 →
约瑟夫环全解析:从暴力模拟到递推公式的优化之路

约瑟夫环全解析:从暴力模拟到递推公式的优化之路

我第一次正经接触约瑟夫环,是在好几年前的一次面试里。面试官递给我一张白纸,说:n个人围成一圈,从第一个人开始报数,报到3的人出局,然后从下一个人重新从1报,最后剩下几号?我当时觉得…

2026/9/18 18:50:32 阅读更多 →

最新新闻

MATLAB通信系统仿真全攻略:基带建模、同步均衡与BER曲线

MATLAB通信系统仿真全攻略:基带建模、同步均衡与BER曲线

简介:这份资源是一份完整的信息工程学院创新实践报告,主题为“基于MATLAB的通信系统仿真”,适合通信工程、电子信息类本专科学生用于课程设计、实验报告或创新项目参考。内容覆盖通信系统仿真的全流程:利用randsrc生成0/1等概随机…

2026/9/19 21:05:27 阅读更多 →
在Linux上安装Anaconda:Python环境管理与虚拟环境实战指南

在Linux上安装Anaconda:Python环境管理与虚拟环境实战指南

我第一次在Linux上安装Anaconda,是几年前接手一台实验室的服务器。当时系统自带的Python 3.6勉强能跑,但项目要求Python 3.8,我既不敢动系统环境,又不想手动编译,折腾了一下午差点把系统搞坏。后来老老实实装上Anacond…

2026/9/19 21:05:27 阅读更多 →
语言模型在医疗诊断中的认知脆弱性与改进方案

语言模型在医疗诊断中的认知脆弱性与改进方案

1. 项目背景与核心问题在人工智能技术快速发展的今天,语言模型作为对话系统的核心组件,其可靠性问题日益受到关注。微软研究院近期针对语言代理(Language Agents)在诊断场景下的认知脆弱性进行了深入研究。这项工作的价值在于揭示…

2026/9/19 21:05:27 阅读更多 →
开源AIGC降重工具千笔的技术解析与应用实践

开源AIGC降重工具千笔的技术解析与应用实践

1. 工具定位与核心价值千笔降AIGC助手作为当前开源免费降重赛道的标杆工具,其核心价值在于解决了学术写作和内容创作中的三大痛点:首先是针对AI生成内容(AIGC)特有的语义重复、句式单一问题设计的深度优化算法;其次是完…

2026/9/19 21:05:27 阅读更多 →
Spacedrive Server 架构全解:嵌入式守护进程、RPC 代理与 Docker 部署实战指南

Spacedrive Server 架构全解:嵌入式守护进程、RPC 代理与 Docker 部署实战指南

Spacedrive Server 架构全解:嵌入式守护进程、RPC 代理与 Docker 部署实战指南 【免费下载链接】spacedrive Spacedrive is an open source cross-platform file explorer, powered by a virtual distributed filesystem written in Rust. 项目地址: https://gitc…

2026/9/19 21:05:27 阅读更多 →
VSCode插件搜索Failed to fetch?一文解决扩展市场报错

VSCode插件搜索Failed to fetch?一文解决扩展市场报错

1. 问题现象与报错本质如果你在VSCode里打开扩展面板,搜索框输入关键字后不但没出结果,还弹出一句“提取扩展时出错。Failed to fetch”,那你大概率和我一样,在某个下午被这个报错卡住了一整个工时。这个提示本身很简洁&#xff0…

2026/9/19 21:04:27 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →