View a markdown version of this page

跨度、事件记录和遥测信号 - Amazon Bedrock AgentCore

跨度、事件记录和遥测信号

Amazon Bedrock AgentCore 评估会处理两个遥测信号,以了解您的代理的行为:

  • 跨度描述单个操作。Span 包含有关操作的元数据:其名称、范围、时间戳和属性。跨度还可能包含对话内容,或者该内容可能存在于单独的事件记录中。

  • 事件记录body字段中包含有效载荷内容:模型、工具和代理的输入和输出。通过共享traceIdspanId将事件记录与其跨度相关联。事件记录遵循 OpenTelemetry 事件惯例。有关更多信息,请参阅参考资料

要评估会话,服务需要跨度以及它们的相关事件记录(如果适用)。对于每个跨度,该服务会执行以下操作:

  1. 根据特定于框架的属性标识跨度的类型。有关详细信息,请参阅每个框架的页面。

  2. 读取所需的值,例如用户提示、代理响应以及工具输入和输出。这些值来自跨度的属性或其相关的事件记录。

主题

ADOT 是如何拆分遥测的

当你的代理使用 AWS 发行版 OpenTelemetry (ADOT) 运行时,遥测就会被拆分。导出跨度时,ADOT 会从跨度属性中提取大型对话内容(模型提示和完成、工具输入和输出),并将其作为单独的事件记录发出。生成的跨度仅包含元数据和小属性。

尽管这种拆分会将完整的对话内容保留在事件记录中,但它会使跨度较小的文档。

ADOT collection (split) Instrumented agent | | span with attributes + content v +--------------------+ | ADOT | extracts conversation content +--------------------+ | | | span | event record(s) | (metadata, attributes) | (body: input / output messages) v v +--------------------+ +-----------------------+ | aws/spans | | event-record | | log group | | log group | +--------------------+ +-----------------------+ | | +-----------+--------------+ v Evaluation service (joins span + event record by traceId / spanId)

拆分后,对话内容保存在事件记录中body(例如body.input.messagesbody.output.messages),跨度带有用于对其进行分类的标识属性。

存储跨度和事件记录的位置

当 ADOT 收集遥测数据时,它会将跨度和事件记录导出到 Amazon CloudWatch,但导出到不同的位置。

  • Span 存储在aws/spans日志组中。此日志组是在启用事务搜索时创建的,这是评估的先决条件。有关启用事务搜索的详细信息,请参阅AgentCore 可观察性

  • 事件记录存储在日志组中,该日志组取决于您的代理托管位置:

    • 在 Amazon Bedrock Runtime 上: AgentCore 运行时在日志流中向其otel-rt-logs日志组发送事件记录,并为您配置此导出。/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>

    • 托管在 AgentCore 运行时外部(例如,在亚马逊弹性容器服务 (Amazon ECS)、亚马逊 Elastic Kubernetes Service (Amazon EKS AWS ) 或 Lambda 上):您的代理将事件记录发送到您通过环境变量配置的日志组。OTEL_EXPORTER_OTLP_LOGS_HEADERS

为了评估会话,该服务会从aws/spans相应的日志组中读取跨度并将其与其关联的事件记录合并在一起。

服务读取内容的位置

对话内容可以放在不同的地方,具体取决于框架和工具库。评估服务会从存放它的任何位置读取它:

  • 事件记录正文:当 ADOT 将内容拆分为单独的事件记录(如上所述)时,服务会从与跨度body相关的事件记录中读取该记录。

  • 跨度属性:一些仪器库将跨度上的内容作为属性保留。

  • 内联 span 事件:一些工具库将内容作为内联事件附加到跨度。

在任何情况下,用于对跨度进行分类的标识属性始终保留在跨度上。这包括将跨度标记为调用代理跨度或执行工具跨度的属性。只有较大的对话内容的位置不同。每个框架的页面列出了每个工具库的标识属性和内容位置。

参考

这些 OpenTelemetry 规范描述了 AgentCore 评估所依据的惯例: