[ PROMPT_NODE_24750 ]
OpenTelemetry
[ SKILL_DOCUMENTATION ]
# OpenTelemetry
> 用于分布式追踪的原生 OpenTelemetry 插桩。
FastMCP 包含用于可观测性的原生 OpenTelemetry 插桩。工具、提示词、资源和资源模板操作会自动生成追踪记录,从而提供对服务器行为、请求处理和提供程序委托链的可见性。
## 工作原理
FastMCP 使用 OpenTelemetry API 进行插桩。这意味着:
* **无需配置** - 插桩始终处于活动状态
* **不使用时无开销** - 没有 SDK 时,所有操作都是空操作
* **自带 SDK** - 你可以控制收集、导出和采样
* **适用于任何 OTEL 后端** - Jaeger, Zipkin, Datadog, New Relic 等
## 启用遥测
导出追踪记录最简单的方法是使用 `opentelemetry-instrument`,它会自动配置 SDK:
bash
pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install
然后运行启用了追踪的服务器:
bash
opentelemetry-instrument
--service_name my-fastmcp-server
--exporter_otlp_endpoint http://localhost:4317
fastmcp run server.py
或者通过环境变量进行配置:
bash
export OTEL_SERVICE_NAME=my-fastmcp-server
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
opentelemetry-instrument fastmcp run server.py
这适用于任何兼容 OTLP 的后端(Jaeger, Zipkin, Grafana Tempo, Datadog 等),且无需更改你的 FastMCP 代码。
了解更多关于 OpenTelemetry Python SDK、自动插桩和可用导出的信息。
## 追踪
FastMCP 为所有 MCP 操作创建跨度(Spans),提供端到端的请求处理可见性。
### 服务器跨度
服务器使用 [MCP 语义约定](https://opentelemetry.io/docs/specs/semconv/gen-ai/mcp/) 为每个操作创建跨度:
| 跨度名称 | 描述 |
| ---------------------- | -------------------------------------------------------- |
| `tools/call {name}` | 工具执行 (例如 `tools/call get_weather`) |
| `resources/read {uri}` | 资源读取 (例如 `resources/read config://database`) |
| `prompts/get {name}` | 提示词渲染 (例如 `prompts/get greeting`) |
对于挂载的服务器,额外的 `delegate {name}` 跨度显示了对子服务器的委托。
### 客户端跨度
FastMCP 客户端为传出请求创建具有相同命名模式的跨度