跳到主要内容

可观测性

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

用量事件

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

字段
inbound_protocola2a
a2a_agent_name被调用的已注册 Agent。
a2a_method被调用的 JSON-RPC 方法,例如 message/send
api_key_id发起调用的调用方 API Key。
status_code调用结果状态。
latency_ms调用端到端延迟。
request_idoccurred_at关联 ID 和时间戳。

A2A 调用没有模型 Token,因此 Token 和成本字段为零。需要按 Agent 归因调用量时,请使用 a2a_agent_namea2a_method,而不是依赖 Token 或花费分析。

事件会记录 Agent 名称、方法和调用结果,但不会包含请求或响应消息内容。它目前也不会把 A2A 任务标识(task id、context id)或任务状态作为独立字段拆出;请使用 a2a_methodstatus_code 做归因。

A2A 用量事件会通过与模型用量事件相同的路径投递:

  • 在 AISIX Cloud 托管部署中,它们会与模型用量一起流向控制面的用量接收端。
  • 它们也会扇出到你为每个环境配置的 OTLP、SLS 或 Datadog 导出器,因此 A2A 流量会出现在同一套导出链路中。

指标

A2A 请求会出现在网关的 Prometheus 指标中,并携带可用于区分模型流量的标签:

  • 请求计数器 aisix_requests_total 会用 provider="a2a"model="a2a" 标记 A2A 调用,并同时带有 statusoutcome
  • 进行中请求 gauge aisix_proxy_in_flight_requests 会用 endpoint="/a2a"inbound_protocol="a2a" 标记 A2A 请求。
  • 用量投递计数器 aisix_usage_events_emitted_total 会用 handler="a2a" 标记 A2A 事件。
过滤用量投递计数器

aisix_usage_events_emitted_total 上,inbound_protocol 标签来自固定集合(openaianthropicmcpother),因此 A2A 事件在该计数器上会归入 inbound_protocol="other"。请使用 handler="a2a" 过滤 A2A 投递事件。实际投递的用量事件本身会携带 inbound_protocol="a2a",并包含 Agent 名称和方法。

指标通过专用指标监听器的 GET /metrics 暴露。完整指标目录和标签语义请参见指标参考

验证

通过网关发送一次 A2A 调用,然后抓取指标端点:

curl -sS "http://127.0.0.1:9090/metrics" | grep -E 'handler="a2a"|provider="a2a"'

预期结果: 输出中包含带有 handler="a2a"aisix_usage_events_emitted_total 样本,以及带有 provider="a2a"aisix_requests_total 样本。请根据你的 observability.metrics.prometheus.addr 调整地址。指标族会在首次观测后注册,因此请先发送一次调用再抓取。

下一步