简介
OpenTrace 是一个基于 eBPF 的可扩展 Linux 内核可观测平台,提供网络诊断、CPU 性能剖析、IO 诊断等核心能力,支持命令行与 MCP 服务两种调用方式,具备可扩展的应用层协议解析框架,允许用户自定义开发协议解析器。
核心功能
skb 丢包追踪
追踪内核网络栈中的 skb 丢包事件,支持按协议、地址、端口等条件过滤:
bash
sudo opentrace-cli trace skbdrop -f "tcp port 80"CPU 性能剖析
基于 perf event 的 CPU 采样,支持内核栈和用户栈的符号解析:
bash
sudo opentrace-cli perf profile --pid 1234应用层协议解析
可插拔的协议解析框架,内置 HTTP/1.x 和 HTTP/2 支持,易于扩展自定义协议。
MCP 服务
支持通过 MCP (Model Context Protocol) 服务调用,便于集成到 AI 工具链:
bash
sudo opentrace-mcp技术架构
┌─────────────────────────────────────────────────────────────────────────┐
│ 用户入口层 │
│ │
│ ┌──────────────┐ ┌─────────────────┐ ┌──────────────────────────┐ │
│ │ opentrace-cli │ │ opentrace-mcp │ │ opentrace-agent │ │
│ │ (命令行工具) │ │ ┌──────┐ │ │ ┌────────┐ ┌────────┐ │ │
│ │ │ │ │ MCP │ │ │ │Manager │ │ API │ │ │
│ │ │ │ │(数据)│ │ │ │(Exporter│ │(REST) │ │ │
│ └──────┬───────┘ │ └──┬───┘ │ │ │ 生命周期)│ │(axum) │ │ │
│ │ └─────┼───────────┘ │ └────┬────┘ └────┬───┘ │ │
└─────────┼────────────────┼──────────────┼───────┼───────────┼─────┘ │
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ │
┌─────────────────────────────────────────────────────────────────────────┐
│ opentrace-kit │
│ 通用 HTTP Server (axum/TLS/Auth/Health) │
└─────────────────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ 核心能力层 │
│ opentrace-bpf │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Collector │ │ Sink │ │ Formatter │ │
│ │ (eBPF采集) │ │ (数据导出) │ │ (格式化) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘| 组件 | 作用 |
|---|---|
| opentrace-cli | 命令行工具,直接调用 opentrace-bpf |
| opentrace-mcp | MCP 服务,通过 opentrace-kit 提供 HTTP 服务 |
| opentrace-agent | Agent 服务(Prometheus 指标 + REST API) |
| opentrace-kit | 通用 HTTP 服务器框架,为 mcp/agent 提供基础设施 |
| opentrace-server | 管理服务器(占位,待实现) |
| Collector | 用户态 eBPF 程序,负责挂载探针、采集内核数据 |
| Sink | 数据导出器,将采集的数据发送到目标(终端/通道等) |
| Formatter | 数据格式化器,将 Event 格式化为可读字符串 |
| Protocol | 应用层协议解析器,将原始字节解析为结构化帧 |
| Symbolizer | 符号解析(内核/用户态/Go/Java) |
