可观测性
每个 MCP tools/call 都会在与模型流量相同的链路上产生用量事件,并更新网关请求指标。这些数据都会带有 MCP 协议标记,因此无需单独建设遥测链路,就能区分 MCP 工具流量。被限流、因预算超限或被安全护栏阻断的调用也会产生事件,因此遥测会反映所有尝试,而不只是成功调用。
用量事件
每个工具调用都会向与模型用量相同的接收端写入一条用量事件。事件包含:
| 字段 | 值 |
|---|---|
inbound_protocol | mcp |
mcp_server_name | 工具所属的已注册 Server。 |
mcp_tool_name | 被调用的上游工具名称。 |
api_key_id | 发起调用的调用方 API Key。 |
status_code | 调用结果状态。 |
latency_ms | 工具调用端到端延迟。 |
guardrail_blocked | 当输入或输出被安全护栏阻断时为 true。 |
request_id、occurred_at | 关联 ID 和时间戳。 |
MCP 工具调用没有模型 Token,因此 Token 和成本字段为零。需要按工具归因调用量时,请使用 mcp_server_name 和 mcp_tool_name,而不是依赖 Token 或花费分析。
事件会记录 Server 名称、工具名称和调用结果,但不会包含工具参数或工具结果。MCP 内容捕获与用量遥测是不同的能力边界。
MCP 用量事件会通过与模型用量事件相同的路径投递:
- 在 AISIX Cloud 托管部署中,它们会与模型用量一起流向控制面的用量接收端。
- 它们也会扇出到你为每个环境配置的 OTLP、SLS 或 Datadog 导出器,因此 MCP 工具流量会出现在同一套导出链路中。
指标
MCP 请求会出现在网关的 Prometheus 指标中,并携带可用于过滤模型流量的标签:
- 在进行中请求 gauge
aisix_proxy_in_flight_requests上,MCP 请求会带有endpoint="/mcp"和inbound_protocol="mcp"。 - 用量投递计数器
aisix_usage_events_emitted_total会用handler="mcp"标记 MCP 事件。
指标通过专用指标监听器的 GET /metrics 暴露。完整指标目录和标签语义请参见指标参考。
验证
通过网关发送一次 MCP 工具调用,然后抓取指标端点:
curl -sS "http://127.0.0.1:9090/metrics" | grep 'inbound_protocol="mcp"'
预期结果: 输出中包含 inbound_protocol="mcp" 的序列,并且 aisix_usage_events_emitted_total 中有 handler="mcp" 的样本。请根据你的 observability.metrics.prometheus.addr 调整地址。指标族会在首次观测后注册,因此请先发送一次工具调用再抓取。