本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
遥测设置和交付
您的代理会发出跨度,亚马逊基岩 AgentCore 评估使用这些跨度来重建每个会话。有关如何 AgentCore 表示会话、跟踪和跨度,请参阅中的了解代理资源的可观测性。 AgentCore
要为会话评分,该服务需要对话内容:模型提示、模型完成以及工具输入和输出。这些内容的位置取决于您的代理如何提供遥测数据,这正是本页的解释。
主题
设置可观察性
对代理进行仪表是生成评估服务可以读取的遥测数据的一部分。您的代理还必须启用可观察性,以便将其遥测数据导出到亚马逊。 CloudWatch完成以下步骤:
-
启用亚马逊 CloudWatch 交易搜索。评估要求在两种交付模式下都使用它。请参阅启用 AgentCore 可观察性。
-
根据您的托管位置为代理启用可观察性:
-
在 Amazon Bedrock AgentCore Runtime 上:请参阅在代理代码中为 AgentCore-hosted 代理启用可观察性。
-
在 AgentCore 运行时外托管(亚马逊 ECS、亚马逊 EKS、 AWS Lambda 或其他环境):请参阅为外部托管的代理启用可观察性。 AgentCore 您也可以在这里设置接收遥测数据的日志组。
-
-
检查您的代理使用哪种交付模式,这样您就可以知道遥测的着陆点。您在 2026 年 7 月 20 日当天或之后创建的代理默认使用统一遥测,而您在该日期之前创建的代理使用分割遥测。统一遥测需要 ADOT 版本 0.18.0 或更高版本 ()。
aws-opentelemetry-distro>=0.18.0早期版本向共享aws/spans日志组发送跨度。对于 AgentCore Runtime 上的代理,您可以使用
UNIFIED_TRACES_DESTINATION_ENABLED环境变量切换模式:将其设置为true用于统一遥测或false分离遥测。有关环境变量、IAM 权限以及每个托管选项的完整程序,请参阅在 Amazon Bedrock AgentCore 运行时托管的代理的 Span 目的地。
更改交付模式不会移动 AgentCore 已经交付的遥测数据。较旧的 Span 会保留在写入的日志组中,因此该服务仍会评估您在更改之前记录的会话。
遥测传送模式
AgentCore 以以下两种模式之一提供代理的遥测数据:
-
统一遥测(推荐)可将所有内容整合在一起。承载模型有效载荷的属性以及工具请求和响应保持不变,并且您的代理的所有遥测数据都集中到一个日志组。
-
分离式遥测将两者分开。 AWS 发行版 OpenTelemetry (ADOT) 将这些属性从跨度移动到单独的记录中,这些记录会转到与跨度不同的日志组。
AgentCore 评估读取两种模式。在评估服务中,您不能在它们之间进行选择,无论哪种方式,相同的评估者都会给出相同的结果。我们建议使用统一遥测,该遥测适用于所有提供 AgentCore Runtime 的 AWS 商业区域。
统一遥测(推荐)
使用统一遥测,您的所有代理的遥测数据都将归入一个日志组。跨度转到该spans日志组中的日志流,位于代理自己的日志和控制台输出旁边。该跨度保留了承载模型有效载荷以及工具请求和响应的属性,因此该服务会从跨度本身读取所需的一切。
哪个日志组存放跨度取决于您托管代理的位置:
-
在亚马逊 Bedrock AgentCore Runtime 上:代理的日志组,
/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>。 AgentCore 为你设置这个。 -
在 AgentCore 运行时外部托管:您在
OTEL_EXPORTER_OTLP_TRACES_HEADERS环境变量中命名的日志组。
将跨度和日志保存在一个地方有助于评估之外的用处。您可以一起查看跟踪和日志,可以编写 AWS 身份和访问管理 (IAM) 策略,为单个代理设置客户托管密钥加密,还可以导出代理通过订阅一个日志组生成的所有内容。
分体遥测
通过分体遥测,ADOT 可将大型有效载荷从跨度中移除。当它导出每个跨度时,它会提取承载模型有效载荷以及工具请求和响应的属性,并将它们作为单独的事件记录发送,而跨度则保留其元数据和较小的属性。事件记录仅在此模式下存在,它们遵循 OpenTelemetry 事件惯例。
每条事件记录都通过共享traceId和链接回其跨度spanId,内容位于记录中body,例如在body.input.messages和中body.output.messages。
然后,这两种记录会流向不同的地方:
-
跨度转到共享
aws/spans日志组。 CloudWatch 当您打开 “事务搜索” 时创建此日志组。 -
事件记录转到单独的日志组。在 AgentCore 运行时,这是代理的日志组,位于
otel-rt-logs日志流中,它会为您 AgentCore 设置。在 AgentCore Runtime 之外,它是您在OTEL_EXPORTER_OTLP_LOGS_HEADERS环境变量中命名的日志组。
为了评估会话,该服务会从其事件记录中读取跨度并将其aws/spans与其事件记录进行匹配。
该服务从跨度读取的内容
对于会话中的每个跨度,该服务执行以下操作:
-
根据框架设置的属性计算出跨度是什么样的。跨度可以是调用代理跨度(顶级代理运行)、执行工具跨度(单个工具调用)或推理跨度(单个模型调用)。
-
读取其所需的值,例如用户提示、代理响应以及工具输入和输出。例如,用户提示来自代理输入中的用户角色消息,代理响应来自代理输出中的助手角色消息。
在两种交付模式下,标识跨度的属性始终保持在跨度上。只有对话内容会移动。内容在跨度内的位置还取决于您的工具库:大多数库将其记录为跨度属性,有些库将其作为事件附加到跨度上。对于每个库,每个框架的页面列出了识别属性,说出内容所在的位置,并显示了两种模式的示例跨度。
参考
AgentCore 评估基于以下 OpenTelemetry 规范:
-
追踪 OpenTelemetry 网站
上的语义惯例:跨度和轨迹的结构及其含义。 -
OpenTelemetry 网站
上的事件语义惯例:事件记录的结构及其含义。 -
Generative-AI GitHub 网站
上的语义约定:描述代理、模型和工具操作的 gen_ai.*属性。
样品代理
以下示例显示了如何对在亚马逊 Bedrock AgentCore Runtime 之外托管的 Strands 代理进行仪器测试。每个示例都 CloudWatch 使用 ADOT 将遥测数据导出到亚马逊。他们专注于可观察性设置,而不是评估 API。这些示例使用 Strands,但相同的托管和遥测导出模式适用于其他支持的框架,例如。 LangGraph
-
亚马逊 EKS:亚马逊EKS上的 EKS-hosted 代理和 Strands代理
的可观察性 ,均在网站上 GitHub 。 -
亚马逊 ECS: GitHub 网站上的亚马逊 ECS 上的
Strands 代理。 -
AWS Lambda:网站上 AWS Lambda 中的
Strands 代理。 GitHub