<!-- title: 8个开源诊断神器看穿线上故障 -->

## 概述：这一期，专治「线上出了事但不知道哪里出事」

前几轮我们挖过终端工具、自托管、地图栈，这一期换个更硬核也离生产更近的方向：**线上故障诊断与性能剖析**。主角是近几年最热的技术底座 eBPF——它让普通工程师在不改代码、不重启服务、不装 SDK 的前提下，看清内核与进程里正在发生什么。本期 8 个仓库里，既有 coroot 这样的开箱即用可观测平台，也有 kyanos、ecapture 这类国人主导的明星项目，还有 ptcpdump、bpftime 两个 Star 不高但极具原创性的小而美。诊断类工具是典型的「平时没人看、出事救命」型资产，二次开发做托管服务或内部平台的商业路径也非常清晰。

> 注：文中 Star 数为发稿时约数，以仓库主页实时数据为准。

---

### 1. coroot — 零侵入的全栈可观测平台

**仓库**：[coroot/coroot](https://github.com/coroot/coroot) ｜ Star 约 6k ｜ 持续更新中

一句话定位：**装上就能用、不用埋点的开源 Datadog 平替**。它解决的是中小团队最大的可观测性痛点——想上 APM，但业务代码侵入、Agent 配置、按量计费三座山太贵。

核心拆解：coroot 的 Agent 基于 eBPF 自动发现进程、服务与依赖关系，自动画出服务拓扑图；据项目文档，它能识别 MySQL、Redis、Kafka、PostgreSQL 等常见组件并把延迟、错误率映射到拓扑边上，再围绕 SLO（延迟/错误率目标）做告警，出问题时直接在图上标出可疑环节。底层整合了 VictoriaMetrics、ClickHouse 等成熟存储，指标、日志、追踪、甚至持续剖析（profiling）一站式收纳。用 Docker Compose 或 Helm 即可起一套完整环境，对 K8s 集群尤其友好。

上手难度：⭐⭐

适用人群：没有专职 SRE、又被云厂商监控账单刺痛的创业团队；做私有化交付的乙方（客户内网不能出公网，coroot 正好）。商业思路上，它本身就是「开源核心 + 云服务」模式，你可以借鉴其架构做垂直行业的托管监控服务，或给它写国产化数据库适配来接私有化项目。

---

### 2. kyanos — 老内核也能用的网络问题显微镜

**仓库**：[hengyetic/kyanos](https://github.com/hengyetic/kyanos) ｜ Star 约 3k ｜ 持续更新中

一句话定位：**在内核里「看见」每一个网络请求与响应，并自动归类到进程**。它治的是分布式系统最恶心的病：接口偶发超时，但应用日志、网关日志、监控全都说「不怪我」。

核心拆解：kyanos 基于 eBPF 在内核态拦截请求和响应，然后按进程、连接、协议三个维度聚合统计，据 README 它内置了 HTTP、Redis、MySQL 等常用协议解析，能直接告诉你「这条 Redis 慢命令是哪个进程发的、耗时花在哪一段」。另一个杀手锏是兼容性：很多 eBPF 工具要求 5.x 新内核，而 kyanos 宣称支持低至 3.10 的老内核——这意味着 CentOS 7 遍布的传统企业机房也能用。终端 TUI 交互式分析，中文文档完善，国内团队主导。

上手难度：⭐⭐

适用人群：后端工程师、DBA、排查过「Redis 偶尔抖一下」的人。它是国产开源里少见的把「易用性」做到位的底层工具，适合写教程、做内部分享积累影响力，也可作为公司自建网络诊断平台的核心引擎。

---

### 3. ptcpdump — 小而美：给 tcpdump 装上「进程透视眼」

**仓库**：[ptcpdump/ptcpdump](https://github.com/ptcpdump/ptcpdump) ｜ Star 约 1k+ ｜ 活跃开发中

一句话定位：**tcpdump 的现代继任者，每个数据包都标着「来自哪个进程、哪个容器、哪个 Pod」**。

核心拆解：tcpdump 是每个后端都学过的老工具，但它有个致命缺陷：抓出来几百兆 pcap，你却不知道某条连接是容器里哪个进程发起的——在 K8s 环境里这几乎是死刑。ptcpdump 用 eBPF 给抓包结果自动附加进程、容器、K8s 元数据，过滤语法兼容 tcpdump，写惯了 `tcpdump -i any port 6379` 的人零学习成本迁移；它还支持把带上下文的抓包导出成文件，丢回 Wireshark 继续深挖。一个二进制文件，无守护进程，即下即用，是典型的「解决单一痛点、设计优雅」的小工具。

上手难度：⭐⭐

适用人群：天天和容器网络打交道的人。这种「老工具 + eBPF 增强」的改造思路本身就是极佳的二次开发模板——同样的手法可以套在 strace、iftop 等一批老古董上，每一个都是潜在的明星仓库。

---

### 4. ecapture — 不装证书，直接抓 TLS 明文

**仓库**：[gojue/ecapture](https://github.com/gojue/ecapture) ｜ Star 约 9k ｜ 持续更新中

一句话定位：**无需 CA 证书、无需改配置，抓取 HTTPS/TLS 加密流量的明文**。注意定位是安全审计与故障排查，请只用在你有授权的环境。

核心拆解：传统抓 HTTPS 要么给抓包工具装根证书（改系统配置、App 可能证书校验直接失败），要么改代码打日志。ecapture 换了条路：用 eBPF uprobe 挂钩 OpenSSL、BoringSSL、NSS 等加密库的读写函数，据 README 还能拿到 TLS master key 配合 Wireshark 解密，全程对目标进程零改动。它对 Android（arm64）的支持让移动端安全研究、App 逆向分析、兼容性调试效率起飞，这也是它在安全圈快速涨星的原因。项目由国内安全研究员 CFC4N 发起，中英文文档齐全，有配套视频教程。

上手难度：⭐⭐⭐

适用人群：安全工程师、移动端开发、SaaS 风控团队。商业方向：安全评估服务的标准装备，或嵌入企业内部的敏感数据外发检测系统。

---

### 5. pwru — 内核丢包案发现场勘查器

**仓库**：[cilium/pwru](https://github.com/cilium/pwru) ｜ Star 约 2k+ ｜ 持续更新中

一句话定位：**packet, where are you?——精确回答「这个包在内核哪一步消失了」**。

核心拆解：网络包被 iptables 规则丢弃、被 conntrack 拒之门外、被某个内核配置坑掉，这类问题以前只能靠人肉读内核源码加猜。pwru 由 eBPF 阵营的明星团队 Cilium（Isovalent）出品，基于 kprobe 给内核里每一个处理函数挂探针，追踪指定 skb（套接字缓冲区）的完整旅程，输出每一站的行为。社区曾用它定位过多个真实的内核网络 bug（据项目 issue 与社区讨论），它也是 Cilium/eBPF 数据路径开发者的日常调试武器。需要较新内核（建议 5.x 以上），普通业务后端用得少，但一旦遇到「玄学丢包」，它就是唯一的答案。

上手难度：⭐⭐⭐

适用人群：云网络工程师、K8s CNI 插件开发者、内核爱好者。做云网络产品的团队（防火墙、网关、多云互联）可以把它包装进自家的诊断模式，省下大量支持成本。

---

### 6. bpftime — 小而美：把 eBPF 搬出内核

**仓库**：[eunomia-bpf/bpftime](https://github.com/eunomia-bpf/bpftime) ｜ Star 约 1k+ ｜ 活跃开发中

一句话定位：**一个让 eBPF 程序跑在用户态的运行时，不需要内核配合，速度还更快**。这是本期技术上最具原创性的项目。

核心拆解：标准 eBPF 的一切能力都以「内核支持新版本」为前提，老服务器上寸步难行。eunomia-bpf 社区（国内开源团队）做的 bpftime 反其道而行：通过 LD_PRELOAD 把运行时注入目标进程，uprobe 探针直接在用户态处理，据项目宣称比传统内核态 uprobe 快一个数量级，且完全兼容 libbpf 生态——已有的 eBPF 代码基本不用改。这打开了几个脑洞：在没有 eBPF 的老内核上享受 eBPF；把追踪逻辑跑进任何闭源进程；甚至做热修复（hot patch）。学术味与工程味兼备，目前仍是早期项目，值得关注和参与。

上手难度：⭐⭐⭐⭐

适用人群：基础设施工程师、APM 厂商研发。商业潜力在于它可能是下一代 APM Agent 的地基——「零内核依赖的性能剖析」是所有云厂商都想要的。

---

### 7. bpftrace — 内核追踪界的「瑞士军刀」

**仓库**：[bpftrace/bpftrace](https://github.com/bpftrace/bpftrace) ｜ Star 约 8k ｜ 持续更新中

一句话定位：**用一行脚本回答「内核这 1 秒到底在干什么」**，业界最老牌的 eBPF 高层追踪语言。

核心拆解：如果前面几个工具是「专用相机」，bpftrace 就是「通用底片」：它提供类 awk 的高层语言，一行 `kprobe:vfs_read { @[comm] = count(); }` 就能统计谁在读文件、读了多少次，编译成 BPF 字节码后由 LLVM 后端 JIT 执行，性能开销极低。它是 Netflix 等大厂性能工程体系（Brendan Gregg 那一套《BPF Performance Tools》方法论）的核心组件，官方 one-liner 教程一晚上就能上手。学它不是学一个工具，而是掌握一种「对操作系统做实验」的能力——前面所有工具遇到覆盖不到的场景，最终都得靠 bpftrace 兜底。

上手难度：⭐⭐⭐⭐

适用人群：SRE、性能工程师、想深入 Linux 内核的开发者。配套的培训、排障咨询在企业市场是真实付费场景。

---

### 8. py-spy — 一行命令给 Python 进程拍 X 光

**仓库**：[benfred/py-spy](https://github.com/benfred/py-spy) ｜ Star 约 12k ｜ 持续更新中

一句话定位：**不改一行代码、不重启进程，实时看清 Python 程序卡在哪**。

核心拆解：Python 服务「莫名卡死」是最常见的工单类型。传统 profiler（cProfile）要改代码、重跑、开销大，线上根本不敢用。py-spy 是采样式剖析器：直接附着到运行中的进程，`py-spy top` 像看任务管理器一样实时看最热的函数栈；`py-spy record` 一条命令生成火焰图（flamegraph / speedscope 格式）；`py-spy dump` 秒回「进程现在卡在哪一行」——查死锁神器。GIL 释放、子进程、多线程都处理得当，pip install 即得，是这 8 个项目里上手成本最低的一个。它虽不走 eBPF 路线，但和本期工具组合食用效果最佳：py-spy 看应用栈，bpftrace 看内核，两边对账。

上手难度：⭐

适用人群：所有写 Python 的人。商业化参照系是 Pyroscope（持续剖析，已被收购）——把 py-spy 的思路做成常驻剖析 + SaaS 展示，就是一条被验证过的路。

---

## 横向对比

| 仓库 | 类型 | Star（约） | 上手难度 | 适用场景 |
|---|---|---|---|---|
| coroot | 全栈可观测平台 | 6k | ⭐⭐ | 团队级监控替代 Datadog |
| kyanos | 网络请求观测 | 3k | ⭐⭐ | 接口超时、老内核服务器 |
| ptcpdump | 抓包增强 | 1k+ | ⭐⭐ | 容器/K8s 网络抓包 |
| ecapture | 加密流量审计 | 9k | ⭐⭐⭐ | 安全审计、移动端调试 |
| pwru | 内核追包 | 2k+ | ⭐⭐⭐ | 玄学丢包定位 |
| bpftime | 用户态 eBPF 运行时 | 1k+ | ⭐⭐⭐⭐ | 老内核、APM 底座研发 |
| bpftrace | 内核追踪语言 | 8k | ⭐⭐⭐⭐ | 深度性能分析 |
| py-spy | Python 剖析器 | 12k | ⭐ | Python 卡顿/死锁 |

## 一张图看懂：故障现场怎么选工具

```mermaid
flowchart TD
    A["线上故障现场"] --> B["先看全局"]
    A --> C["怀疑网络"]
    A --> D["怀疑代码"]
    B --> E["coroot 自动拓扑体检"]
    C --> F["包在哪一步丢了"]
    C --> G["这条连接是谁发的"]
    F --> H["pwru 内核级追包"]
    G --> I["ptcpdump 带进程抓包"]
    C --> J["要审计加密流量"]
    J --> K["ecapture 无证书抓明文"]
    D --> L["Python 进程卡顿"]
    D --> M["内核行为看不懂"]
    L --> N["py-spy 采样火焰图"]
    M --> O["bpftrace 一行脚本"]
    O --> P["bpftime 用户态扩展"]
```

## 本期之最

- **最值得立即尝试：py-spy** — pip 一装，下个线上卡顿工单 5 分钟内出火焰图，回报/成本比全场最高。
- **最有商业潜力：coroot** — 可观测性是千亿级市场，「零埋点 + 开源免费」的切口正打在 Datadog 定价体系的软肋上。
- **最被低估：bpftime** — 把 eBPF 从内核搬到用户态是方向级创新，现在参与还来得及成为早期贡献者。

## 参考来源

1. [coroot/coroot](https://github.com/coroot/coroot) — coroot 官方仓库，架构与功能以项目 README 为准
2. [hengyetic/kyanos](https://github.com/hengyetic/kyanos) — kyanos 官方仓库，含内核兼容性与协议支持说明
3. [gojue/ecapture](https://github.com/gojue/ecapture) — ecapture 官方仓库，含使用场景与 Android 支持说明
4. [cilium/pwru](https://github.com/cilium/pwru) — pwru 官方仓库，含典型调试案例
5. [eunomia-bpf/bpftime](https://github.com/eunomia-bpf/bpftime) — bpftime 官方仓库，含性能宣称与兼容性说明

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
