
Y Combinator 孵化的初创公司 Subtrace 发布了一款开源工具,用于分析容器化应用的网络流量。工具的开发者将其定位为“容器版 Wireshark”,旨在简化 Docker 和 Kubernetes 环境中的网络调试工作。
Subtrace 将系统调用跟踪与网络数据包分析集成在一个统一的界面中,让开发人员能够清晰地观察到应用在系统层面的行为以及数据在容器网络中的流动情况。该工具利用 eBPF 技术来捕获这些信息,从而在理论上将对运行中容器的性能影响降至最低。

Subtrace 的开发团队表示,传统的网络分析工具在处理容器化环境时面临诸多挑战。像 Wireshark 这样的标准工具需要手动配置才能访问容器网络命名空间,这对于需要处理多个容器或 Kubernetes 集群的开发人员来说,不仅过程复杂,而且耗时费力。
Subtrace 通过提供原生容器集成来解决这些挑战。它理解容器的概念,并能够自动将网络流量与容器身份相关联,从而减少了分析容器网络行为所需的大量手动工作。Subtrace 可以自动发现正在运行的容器,并在无需手动配置命名空间的情况下连接到其网络接口。它还能够在 Kubernetes 环境中将网络流量与容器元数据(如 Pod 名称和服务标签)相关联。

该工具提供了命令行界面和 Web 界面。Web 界面专为容器工作负载设计,提供了类似于 Wireshark 的可视化网络流量分析。用户可以根据容器、服务或协议过滤流量,并详细检查数据包的详细内容。
Subtrace 在 Hacker News 上的发布公告引发了关于其技术方法和定位的一些讨论。一些用户对其“容器版 Wireshark”的说法提出了质疑,用户 jolmg 评论道:“我最初对‘Docker 容器版 Wireshark’的印象是‘……好吧,Wireshark 本身已经可以用于 Docker 容器了,所以如果你的目标是成为 Docker 容器版的 Wireshark,那么你从定义上就注定会失败。你无法在成为 Wireshark 的同时打败 Wireshark。’”
用户 sophacles 提供了详细的反馈,阐述了他们心目中真正的“容器版 Wireshark”应有的功能。他指出:“它并不是 Wireshark,它离 Wireshark 还差得远,仅仅因为它能够捕获一些 TCP 数据包。”他进一步强调了诸如 DNS 流量检查、通过容器网络堆栈的数据包跟踪以及 NAT 跟踪能力等功能的必要性。
不过,其他一些社区成员也指出,Subtrace 可以填补一个独特的细分市场。用户 chatmasta 表示:“在我看来,真正的用户体验问题是 Wireshark 和 DevTools 之间存在一个空白。如果有一个程序可以从 .pcap 文件中渲染出 DevTools UI,那将是非常酷的。”
社区成员对 Subtrace 的 TLS 解密方法印象深刻。该工具会生成临时的 TLS 根证书,并将其注入系统证书库,而无需 root 权限。项目创建者 adtac 解释说:“我们拦截 open(2) 系统调用,查看它是否是 /etc/ssl/certs/ca-certificates.crt(或等效文件)。如果是,我们会将临时根 CA 添加到实际的 CA 证书列表中。”
对于这一解释,社区的反应褒贬不一。用户 cyberax 评论道:“我不知道自己是感到震惊还是惊叹。”而用户 chatmasta 则称赞这是一种“很棒的黑客手段”,提供了“干净”的代理功能。用户 1oooqooq 警告说:“就像所有那些过于精巧却又未被充分记录的东西一样,你或许会对它赞叹不已,但直到你花费数周时间去排查它所引发的问题时,你才会意识到它的复杂性。”
社区讨论还包含了对数据隐私的担忧,用户 gerwim 指出:“似乎 subtrace 进程会将所有数据发送到你的服务器。我不愿意在生产环境中这样做,因为那里有 API 密钥和个人数据。”对此,开发者表示可以通过在本地运行工具来缓解这些担忧。本地运行模式允许用户完全在本地运行 Subtrace,无需将数据发送到外部服务器。
其他开源工具也提供了类似的分析容器网络流量的功能。Pixie 为 Kubernetes 集群提供了全面的可观测性,包括网络跟踪能力。Pixie 捕获的遥测数据范围更广,不仅包括网络流量,还包括应用程序的指标和分布式追踪信息。不过 Pixie 需要消耗更多的系统资源,并且在某些环境中部署起来可能较为复杂。Pixie 主要专注于 Kubernetes,支持 11 种应用协议,而 Subtrace 支持 Docker 和 Kubernetes 部署。
Hubble 作为 Cilium 网络堆栈的一部分,提供了网络可观测性。得益于与 Cilium 网络策略的紧密集成,Hubble 可以提供服务之间的详细流量分析。Hubble 还提供用于可视化网络流量的命令行工具和图形界面。不过它依赖 Cilium 作为容器网络接口,而 Subtrace 能够与任何容器网络设置兼容。
微软的 Retina 专注于 Kubernetes 集群的网络可观测性,能够捕获数据包并分析网络流量,并且与 Azure 监控服务集成良好。不过,虽然 Retina 是开源的,但与 Azure 的兼容性是最好的。如果要在其他云平台上运行,Retina 需要进行更多的配置工作,并且其学习曲线似乎比 Subtrace 更为陡峭。
Subtrace 直接通过 eBPF 程序从内核捕获网络数据。这种方法比传统的在用户空间运行的数据包捕获方法开销更小,因此可以在不影响应用性能的情况下处理大量的网络流量。使用 eBPF 也意味着该工具需要在较新的 Linux 内核版本上运行,并且需要适当的权限来加载 eBPF 程序,这在某些环境中可能会受到限制。
Subtrace 现已作为开源项目在 GitHub 上发布,并作为商业产品在 Subtrace.dev 上提供。
【声明:本文由 InfoQ 翻译,未经许可禁止转载。】
原文链接:
https://www.infoq.com/news/2025/07/subtrace-network-analysis/
评论