跳到主要内容

可观测性

每个 MCP tools/call 都会在与模型流量相同的链路上产生用量事件,并更新网关请求指标。这些数据都会带有 MCP 协议标记,因此无需单独建设遥测链路,就能区分 MCP 工具流量。被限流、因预算超限或被安全护栏阻断的调用也会产生事件,因此遥测会反映所有尝试,而不只是成功调用。

用量事件

每个工具调用都会向与模型用量相同的接收端写入一条用量事件。事件包含:

字段
inbound_protocolmcp
mcp_server_name工具所属的已注册 Server。
mcp_tool_name被调用的上游工具名称。
api_key_id发起调用的调用方 API Key。
status_code调用结果状态。
latency_ms工具调用端到端延迟。
guardrail_blocked当输入或输出被安全护栏阻断时为 true
request_idoccurred_at关联 ID 和时间戳。

MCP 工具调用没有模型 Token,因此 Token 和成本字段为零。需要按工具归因调用量时,请使用 mcp_server_namemcp_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 调整地址。指标族会在首次观测后注册,因此请先发送一次工具调用再抓取。

下一步

  • 指标参考:查看完整指标目录、标签和 MCP 相关说明。
  • 安全护栏:被阻断的工具调用会设置 guardrail_blocked 标记。
  • 限流与预算:被拒绝的工具调用会带有对应拒绝状态写入事件。