View a markdown version of this page

为您的 Amazon Bed AgentCore rock 资源增加可观察性 - Amazon Bedrock AgentCore

为您的 Amazon Bed AgentCore rock 资源增加可观察性

Amazon Bedrock AgentCore 提供了许多内置指标,用于监控 AgentCore 运行时、内存、网关、内置工具和身份资源类型的资源性能。此默认数据在 Amazon 中可用 CloudWatch。要在 CloudWatch 控制台中查看全方位的可观测性数据,或者要为代理输出自定义运行时指标,您需要使用 AWS Distro for Open Telemetry (ADOT) SDK 来检测您的代码。

要在中查看可观测性控制面板 CloudWatch,请打开 Amazon CloudWatch GenAi 可观测性页面

请参阅以下章节,详细了解如何配置资源以在 CloudWatch 控制台生成的 AI 可观测性页面和日志中查看可观察性指标。 CloudWatch

提示

在运行 AgentCore 时之外运行的代理还支持使用 ADOT SDK 输出自定义指标。要了解如何为这些代理启用可观察性,请参阅为托管在外部的代理启用可观察性。 AgentCore

启用可 AgentCore 观测性

要查看该 AgentCore 服务生成的指标、跨度和跟踪,您首先需要完成一次性设置以打开 Amazon CloudWatch 交易搜索。要查看服务提供的内存资源跨度,还需要在创建内存时启用跟踪。要了解更多信息,请参阅为 AgentCore 运行时、内存、网关、内置工具和身份资源启用可观察性

以下各节介绍如何执行这些设置操作以及在代理代码中启用可观察性。

启用 CloudWatch 交易搜索

您可以使用 CloudWatch 控制台启用 CloudWatch 交易搜索,也可以通过 AWS 命令行界面 (AWS CLI) 或其中一个 AWS 软件开发工具包使用 API。

使用以下过程之一启用 “交易搜索”。

CloudWatch console
  1. ====== 在控制台中启用 CloudWatch “交易搜索” CloudWatch

  2. 打开 CloudWatch 控制台

  3. 在导航窗格中,展开应用信号 (APM),然后选择交易搜索

  4. 选择启用 Transaction Search

  5. 选中该复选框可将 span 作为结构化日志提取。

  6. 选择保存

API
  1. ====== 使用 API 启用交易搜索 CloudWatch

  2. 使用 AWS CLI 或 S AWS DK 启用事务搜索时,首先要通过添加基于资源的策略来配置在 CloudWatch 日志中提取跨度的必要权限。PutResourcePolicy

    以下 AWS CLI 命令添加了一个资源策略,该策略授予向 CloudWatch 日志发送跟踪的 AWS X-Ray 权限。

    aws logs put-resource-policy --policy-name MyResourcePolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "TransactionSearchXRayAccess", "Effect": "Allow", "Principal": { "Service": "xray.amazonaws.com" }, "Action": "logs:PutLogEvents", "Resource": [ "arn:partition:logs:region:account-id:log-group:aws/spans:*", "arn:partition:logs:region:account-id:log-group:/aws/application-signals/data:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:partition:logs:region:account-id:*" }, "StringEquals": { "aws:SourceAccount": "account-id" } } } ]}'

    为清楚起见,以下示例中显示了此命令中的内联 JSON 策略:

    { "Version":"2012-10-17", "Statement": [ { "Sid": "TransactionSearchXRayAccess", "Effect": "Allow", "Principal": { "Service": "xray.amazonaws.com" }, "Action": "logs:PutLogEvents", "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:aws/spans:*", "arn:aws:logs:us-east-1:123456789012:log-group:/aws/application-signals/data:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:xray:us-east-1:123456789012:*" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }
  3. 使用配置追踪线段的目的地UpdateTraceSegmentDestination

    要使用 C AWS LI,请运行以下命令。

    aws xray update-trace-segment-destination --destination CloudWatchLogs
  4. (可选)使用配置所需的采样百分比UpdateIndexingRule

    要使用 C AWS LI,请运行以下命令。

    aws xray update-indexing-rule --name "Default" --rule '{"Probabilistic": {"DesiredSamplingPercentage": number}}'

托管在 Amazon Bedrock AgentCore 运行时中的代理的跨度目的地

提示

现在,您可以将代理的所有遥测(跨度、结构化日志和标准输出)整合到每个代理的单个日志组中。

借助 AgentCore 运行时(Amazon Bedrock 的一项功能) AgentCore,您可以将代理配置为将其跨度传输到与代理 CloudWatch 日志相同的亚马逊日志组。使用此配置,span 会转到中的spans日志流/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>,而不是共享aws/spans日志组。您可以将跨度、结构化日志和标准输出一起保存在每个代理的一个日志组中,将访问控制和加密范围限定到单个代理,并从单个位置导出遥测数据。

在支持的 AWS 区域中,新创建的代理使用代理的日志组作为默认跨度目标。在区域支持统一跨度目标之前创建的代理会将共享aws/spans日志组保留为默认值。

您可以在代理运行时使用UNIFIED_TRACES_DESTINATION_ENABLED环境变量覆盖单个代理的默认值:

  • 要选择使用共享aws/spans日志组的现有代理,请设置UNIFIED_TRACES_DESTINATION_ENABLED=true。 AgentCore 然后将代理的跨度传送到其自己的日志组。

  • 要选择退出默认使用自己的日志组的代理,请设置UNIFIED_TRACES_DESTINATION_ENABLED=false。 AgentCore 然后将代理的跨度传送到共享aws/spans日志组。

AgentCore 要将跨度传送到代理的日志组,必须满足以下条件:

  • 在您的账户中启用 CloudWatch 交易搜索并将追踪段发送到 Amazon CloudWatch Logs。如果没有事务搜索, AgentCore 则无法将跨度传送到代理的日志组。有关更多信息,请参阅启用 CloudWatch 交易搜索

  • 将对代理日志组的logs:PutResourcePolicy操作授予代理的执行角色。 AgentCore 使用此权限允许 AWS X-Ray 向日志组传送 span。有关更多信息,请参阅在运行 AgentCore 时运行代理的执行角色

  • 代理使用 ADOT 版本 0.18.0 或更高版本 ()。aws-opentelemetry-distro>=0.18.0早期版本会忽略跨度目标配置并将跨度传送到共享aws/spans日志组。

更改跨度目标不会移动现有跨度数据。 AgentCore 已交付的 Span 仍保留在其原始日志组中。

在代理代码中为 AgentCore-hosted 代理启用可观察性

除了服务生成的指标外, AgentCore 您还可以收集跨度和跟踪数据以及代理代码发出的自定义指标。

当您将代理框架(例如 StrandsCrew aI)与支持的第三方插桩库一起使用时,框架本身内置了对 OTEL 和 GenAI 语义约定的支持,也可以使用自动插桩包对其进行检测,例如。LangChainopentelemetry-instrument-langchain也可以通过定义自定义示踪器来发送生成式 AI 语义约定遥测度。 AgentCore 支持在代理框架中使用以下工具库:

要在 CloudWatch 控制台生成的 AI 可观测性页面和 Amazon 中查看这些数据 CloudWatch,您需要将 AWS Distro for Open Telemetry (ADOT) SDK 添加到您的代理代码中。

注意

使用 AgentCore,您还可以查看未在运行 AgentCore 时运行的代理的指标。要为非AgentCore 代理配置遥测输出,还需要执行其他设置步骤。要了解更多信息,请参阅为托管在外部的代理启用可观察性中的说明。 AgentCore

要添加 ADOT 支持并启用 AgentCore 可观察性,请按照以下过程中的步骤操作。

为您的代理添加可观察性 AgentCore

  1. 确保您的框架已配置为发出跟踪。例如,在 Strands 框架中,必须将 tracer 对象配置为指示 Strands 发出开放遥测 (OTEL) 日志。

  2. 将 ADOT SDK 和 boto3 添加到代理的依赖项中。对于 Python,请将以下内容添加到您的requirements.txt文件中:

    aws-opentelemetry-distro>=0.10.0 boto3

    或者,你可以直接安装依赖关系:

    pip install aws-opentelemetry-distro>=0.10.0 boto3
  3. 使用 OpenTelemetry 自动插桩命令执行代理代码:

    opentelemetry-instrument python my_agent.py

    这种自动检测方法会自动将 SDK 添加到 Python 路径中。您可能已经在使用这种方法作为标准 OpenTelemetry 实现的一部分。

    对于容器化环境(例如 docker),请添加以下命令:

    CMD ["opentelemetry-instrument", "python", "main.py"]

    使用 ADOT 时,为了正确传播会话 ID,请在请求标头X-Amzn-Bedrock-AgentCore-Runtime-Session-Id中定义。然后,ADOT 在下游标头中正确设置 session_id。

    要传播跟踪 ID,请使用参数traceId=<traceId>集调用 AgentCore 运行时。

    您还可以使用其他标头来调用代理,以获得其他可观察性选项。要了解更多信息,请参阅使用自定义标题增强 AgentCore 运行时可观察性

为托管在外部的代理启用可观察性 AgentCore

要为在 AgentCore 运行时之外托管的代理启用可观察性,请先按照前几节中的步骤启用 CloudWatch 事务搜索,然后将 ADOT SDK 添加到您的代码中。

如果您在 AWS Lambda 上托管代理,请使用发行版网站 OpenTelemetry上的 AWS Lambda 层。 AWS OpenTelemetry 将图层添加到您的函数中,然后将AWS_LAMBDA_EXEC_WRAPPER环境变量设置为/opt/otel-instrument。然后,该图层会自动对你的函数进行乐器。使用这种方法,您无需添加aws-opentelemetry-distro软件包或运行前面描述的opentelemetry-instrument命令。

代理可观察性不支持 ADOT 收集器

代理可观察性不支持 ADOT 收集器。要从 AgentCore 运行时之外托管的代理发送遥测数据,您必须使用 ADOT SDK 或 Lambda 层 AWS 。 OpenTelemetry

对于在运行时之外 AgentCore 运行的代理,您还需要创建一个代理日志组,并将其包含在环境变量中。

配置您的 AWS 环境变量,然后设置您的 Open Telemetry 环境变量,如下所示。

AWS 环境变量

AWS_ACCOUNT_ID=<account id> AWS_DEFAULT_REGION=<default region> AWS_REGION=<region> AWS_ACCESS_KEY_ID=<access key id> AWS_SECRET_ACCESS_KEY=<secret key>

OTEL 环境变量

AGENT_OBSERVABILITY_ENABLED=true OTEL_PYTHON_DISTRO=aws_distro OTEL_PYTHON_CONFIGURATOR=aws_configurator # required for ADOT Python only OTEL_RESOURCE_ATTRIBUTES=service.name=<agent-name>,aws.log.group.names=/aws/bedrock-agentcore/runtimes/<agent-id>,cloud.resource_id=<AgentEndpointArn:AgentEndpointName> # endpoint is optional OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=/aws/bedrock-agentcore/runtimes/<agent-id>,x-aws-log-stream=runtime-logs,x-aws-metric-namespace=bedrock-agentcore OTEL_EXPORTER_OTLP_TRACES_HEADERS=x-aws-log-group=/aws/bedrock-agentcore/runtimes/<agent-id>,x-aws-log-stream=spans # (Optional) Directs spans to your log group instead of the aws/spans log group. Requires ADOT version 0.18.0 or later. OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf OTEL_TRACES_EXPORTER=otlp OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false # AWS Lambda Layer for OpenTelemetry only: disables Application Signals OTEL_LOGS_EXPORTER=otlp # AWS Lambda Layer for OpenTelemetry only: exports logs over OTLP OTEL_METRICS_EXPORTER=awsemf # AWS Lambda Layer for OpenTelemetry only: exports metrics as CloudWatch EMF

<agent-name>替换为代理人的姓名和代理<agent-id>的唯一标识符。

注意

如果您设置为OTEL_EXPORTER_OTLP_TRACES_HEADERS将跨度传送到自己的日志组,则还必须添加 Amazon Lo CloudWatch gs 资源策略。该策略必须允许 X-Ray (xray.amazonaws.com) 调logs:PutLogEvents用该日志组。使用启用 CloudWatch 事务搜索中显示的相同策略,并使用日志组的 ARN。Resource如果没有此策略, X-Ray 则无法将跨度传送到您的日志组。

注意

(可选)对于 Strands LangChain、和 CrewaI 以外的代理框架:您可能需要添加额外的 SDK 和代码来发送生成式 AI 语义约定遥测和跨度。 AgentCore 可观察性是 Amazon Bedrock 的一项功能 AgentCore,它支持在代理框架中使用以下仪器库:* * Openllm etry * OpenInference* Traceloop OpenLit

会话 ID 支持

要传播会话 ID,您需要在 OTEL 行李中使用会话标识符进行调用:

from opentelemetry import baggage ctx = baggage.set_baggage("session.id", session_id) # Set the session.id in baggage attach(ctx) # Attach the context to make it active token

为 AgentCore 运行时、内存、网关、内置工具和身份资源启用可观察性

在创建 AgentCore 运行时资源(代理)时,默认情况下, AgentCore 运行时会为服务提供的 CloudWatch 日志创建一个日志组。但是,对于内存、网关和内置工具资源, AgentCore 不会自动为您配置日志目标。

对于内存和网关资源,您可以在控制台中或使用 AWS SDK 配置日志目标。如果您使用控制台配置 CloudWatch 日志目标,则内存和网关资源的默认日志组名称的格式{resource-type}/aws/vendedlogs/bedrock-agentcore/{resource-type}/APPLICATION_LOGS/{resource-id},其中为memorygateway

对于内存和网关日志,您还可以使用控制台在 Amazon S3 日志或 Firehose 流日志中配置日志目标。 AgentCore 要了解有关在 Amazon S3 或 Firehose 中存储日志的更多信息,请参阅在 Amazon S3 中上传、下载和使用对象以及创建亚马逊数据 Firehose 传输流。

要了解有关内存和网关资源输出的 AgentCore 日志数据的更多信息,请参阅提供的日志数据(内存)提供的日志数据(网关)

对于内置工具资源,该 AgentCore 服务默认不提供日志,但您可以从代码中输出自己的日志。如果您提供自己的日志输出,则需要手动配置日志目标来存储这些数据。

要查看可观测性数据默认 AgentCore 为每种资源类型提供了什么,请参阅 Amazon Bedrock AgentCore 生成的可观测性数据。

使用控制台配置日志目标

要在 AgentCore 控制台中配置内存或网关日志的日志目标,请使用以下步骤。

Memory
  1. ====== 为内存资源配置日志传输(控制台)

  2. 在 AgentCore 控制台中打开 “内存” 页面。

  3. 在 “内存” 窗格中,选择要为其配置日志目标的内存。

  4. 向下滚动到 “日志传送” 窗格并选择 “添加”。

  5. 从下拉列表中,选择要添加的日志目标类型(CloudWatch 日志组、Amazon S3 存储桶或 Amazon Data Firehose)。

  6. 在 “日志类型” 中,选择 “应用程序日志”。

  7. 对于亚马逊 S3 和 Firehose 目的地,请输入配送目的地 AR N。对于 CloudWatch 日志,目标日志组已使用默认值填充。

  8. (可选)对于 CloudWatch 日志目标,要更改默认日志组,请在目标日志组下输入新的日志组名称或选择现有的日志组

  9. (可选)要更改每条日志记录中捕获的字段或日志的输出格式,请展开其他设置-可选,然后将字段选择输出格式字段分隔符修改为所需的配置。

  10. 选择添加

Gateway
  1. ====== 为网关资源配置日志传输(控制台)

  2. 在 AgentCore 控制台中打开网关页面。

  3. 在 Gateways 窗格中,选择要为其配置日志目标的网关。

  4. 向下滚动到 “日志传送” 窗格并选择 “添加”。

  5. 从下拉列表中,选择要添加的日志目标类型(CloudWatch 日志组、Amazon S3 存储桶或 Amazon Data Firehose)。

  6. 对于亚马逊 S3 和 Firehose 目的地,请输入配送目的地 AR N。对于 CloudWatch 日志,目标日志组已使用默认值填充。

  7. (可选)对于 CloudWatch 日志目标,要更改默认日志组,请在目标日志组下输入新的日志组名称或选择现有的日志组

  8. (可选)要更改每条日志记录中捕获的字段或日志的输出格式,请展开其他设置-可选,然后将字段选择输出格式字段分隔符修改为所需的配置。

  9. 选择添加

Runtime
  1. ====== 为代理运行时资源配置日志传输(控制台)

  2. 在 AgentCore 控制台中打开 “代理运行时” 页面。

  3. 在 “运行时代理” 窗格中,选择要为其配置日志目标的运行时代理。

  4. 向下滚动到日志传送窗格,然后从添加下拉列表中选择日志记录目标 ——亚马逊 CloudWatch 日志、Amazon S3 或 Amazon Data Firehose。

  5. 配置以下日志传送详细信息,然后选择添加

    • 对于日志类型,请选择 APPLICATION _LO GS。

    • 如果使用 Amazon CloudWatch Logs 作为日志目标,请指定目标日志组。

    • 如果使用 Amazon S3 作为日志目标,请指定目标 Amazon S3 存储桶。

    • 如果使用 Amazon Data Firehose 作为记录目标,请指定目标传输流。

  6. 验证日志传送状态是否设置为 “传送已激活”。

Built-in tools
  1. ====== 为内置工具资源配置日志传输(控制台)

  2. 在 AgentCore 控制台中打开Built-in 工具页面。

  3. Built-in 工具窗格的代码解释器工具或浏览器工具选项卡中,选择要为其配置日志目标的代码解释器工具或浏览器工具。

  4. 向下滚动到日志传送窗格,然后从添加下拉列表中选择日志记录目标 ——亚马逊 CloudWatch 日志、Amazon S3 或 Amazon Data Firehose。

  5. 配置以下日志传送详细信息,然后选择添加

    • 对于日志类型,请选择 APPLICATION _LO GS。

    • 如果使用 Amazon CloudWatch Logs 作为日志目标,请指定目标日志组。

    • 如果使用 Amazon S3 作为日志目标,请指定目标 Amazon S3 存储桶。

    • 如果使用 Amazon Data Firehose 作为记录目标,请指定目标传输流。

  6. 验证日志传送状态是否设置为 “传送已激活”。

Identity
  1. WorkloadIdentity 日志传输启用在相关的资源级别处理,包括代理运行时或代理网关资源。

    为关联资源配置 WorkloadIdentity 日志传输(控制台)

  2. 在 AgentCore 控制台中打开网关代理运行时页面,然后选择要为其启用 WorkloadIdentity 日志记录的代理或网关。

  3. 在 “身份” 选项卡中,向下滚动到 “日志传输” 窗格,然后从 “添加” 下拉列表中选择 “日志记录” 目标 ——亚马逊 CloudWatch 日志、Amazon S3 或 Amazon Data Firehose。

  4. 配置以下日志传送详细信息,然后选择添加

    • 对于日志类型,请选择 APPLICATION _LO GS。

    • 如果使用 Amazon CloudWatch Logs 作为日志目标,请指定目标日志组。

    • 如果使用 Amazon S3 作为日志目标,请指定目标 Amazon S3 存储桶。

    • 如果使用 Amazon Data Firehose 作为记录目标,请指定目标传输流。

  5. 验证日志传送状态是否设置为 “传送已激活”。

CloudWatch 使用控制台将跟踪交付配置为

本节介绍如何启用跟踪交付, CloudWatch 以跟踪应用程序中的交互流,从而使您能够直观呈现请求、识别性能瓶颈、排除错误并优化性能。

Memory
  1. ====== 配置内存资源跟踪(控制台)

  2. 在 AgentCore 控制台中打开 “内存” 页面。

  3. 在 “内存” 窗格中,选择要为其启用跟踪的内存资源。

  4. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存”。

Runtime
  1. ====== 配置运行时资源的跟踪(控制台)

  2. 在 AgentCore 控制台中打开代理运行时页面。

  3. 在 “运行时代理” 窗格中,选择要为其启用跟踪的代理。

  4. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存”。

    AgentCore 启用对选定代理的跟踪。Span 出现在代理的日志组 (/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>) 中,或者使用共享跨度目标的代理的aws/spans日志组中。有关更多信息,请参阅 Amazon Bedrock AgentCore 运行时中托管的代理的 Span 目标

    为运行时资源配置 WorkloadIdentity 跟踪(控制台)

  5. 在 AgentCore 控制台中打开代理运行时页面。

  6. 在 “运行时代理” 窗格中,选择 “身份” 选项卡,然后选择要为其启用 WorkloadIdentity 跟踪的代理。

  7. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存”。

    WorkloadIdentity 将为选定的代理启用跟踪,并且aws/spans日志组中将提供跨度。

Built-in tools
  1. ====== 为内置工具配置跟踪(控制台)

  2. 在 AgentCore 控制台中打开Built-in 工具页面。

  3. Built-in 工具窗格的代码解释器工具或浏览器工具选项卡中,选择要为其启用跟踪的代码解释器工具或浏览器工具。

  4. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存”。

    将为选定的代码解释器或浏览器工具启用跟踪,并且 span 将在aws/spans日志组中可用。

Gateway
  1. ====== 配置网关资源的跟踪(控制台)

  2. 在 AgentCore 控制台中打开网关页面。

  3. 网关窗格中,选择要为其启用跟踪的网关。

  4. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存”。

    将为所选网关启用跟踪,并且 span 将在aws/spans日志组中可用。

    为网关资源配置 WorkloadIdentity 跟踪(控制台)

  5. 在 AgentCore 控制台中打开网关页面。

  6. 网关窗格中,选择身份选项卡,然后选择要为其启用 WorkloadIdentity 跟踪的网关。

  7. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存”。

    WorkloadIdentity 将为所选网关启用跟踪,并且 span 将在aws/spans日志组中可用。

    注意

    必须先启用 “CloudWatch 交易搜索”,然后才能启用跟踪。

Identity
  1. ====== 配置身份资源跟踪(控制台)

  2. 在 AgentCore 控制台中打开 “身份” 页面。

  3. 在 “身份” 窗格中,选择要启用跟踪的 OAuth 客户端或 API 密钥。

  4. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存”。

使用配置 CloudWatch 资源 AWS SDK

为日志和跟踪配置传送源 (SDK)

  • 运行以下 Python 代码来配置 CloudWatch 您的内存、网关和内置工具资源。请注意,用于跟踪的传送源和目标仅适用于内存和网关资源。

import boto3 def enable_observability_for_resource(resource_arn, resource_id, account_id, region='us-east-1'): """ Enable observability for a Bedrock AgentCore resource (e.g., Memory Store) """ logs_client = boto3.client('logs', region_name=region) # Step 0: Create new log group for vended log delivery log_group_name = f'/aws/vendedlogs/bedrock-agentcore/{resource_id}' logs_client.create_log_group(logGroupName=log_group_name) log_group_arn = f'arn:aws:logs:{region}:{account_id}:log-group:{log_group_name}' # Step 1: Create delivery source for logs logs_source_response = logs_client.put_delivery_source( name=f"{resource_id}-logs-source", logType="APPLICATION_LOGS", resourceArn=resource_arn ) # Step 2: Create delivery source for traces traces_source_response = logs_client.put_delivery_source( name=f"{resource_id}-traces-source", logType="TRACES", resourceArn=resource_arn ) # Step 3: Create delivery destinations logs_destination_response = logs_client.put_delivery_destination( name=f"{resource_id}-logs-destination", deliveryDestinationType='CWL', deliveryDestinationConfiguration={ 'destinationResourceArn': log_group_arn, } ) # Traces required traces_destination_response = logs_client.put_delivery_destination( name=f"{resource_id}-traces-destination", deliveryDestinationType='XRAY' ) # Step 4: Create deliveries (connect sources to destinations) logs_delivery = logs_client.create_delivery( deliverySourceName=logs_source_response['deliverySource']['name'], deliveryDestinationArn=logs_destination_response['deliveryDestination']['arn'] ) # Traces required traces_delivery = logs_client.create_delivery( deliverySourceName=traces_source_response['deliverySource']['name'], deliveryDestinationArn=traces_destination_response['deliveryDestination']['arn'] ) print(f"Observability enabled for {resource_id}") return { 'logs_delivery_id': logs_delivery['id'], 'traces_delivery_id': traces_delivery['id'] } # Usage example resource_arn = "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/my-memory-id" resource_id = "my-memory-id" account_id = "123456789012" delivery_ids = enable_observability_for_resource(resource_arn, resource_id, account_id)

使用自定义 AgentCore 标头增强运行时可观察性

您可以使用其他 HTTP 标头来调用代理,以提供增强的可观察性选项。以下示例显示了对运行时托管的代理的调用,包括可选的额外标头请求。 AgentCore

Boto3 调用示例

def invoke_agent(agent_id, payload, session_id=None): client = boto3.client("bedrock-agentcore", region="us-west-2") response = client.invoke_agent_runtime( agentRuntimeArn="arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/test_agent_boto2-nIg2xk3VSR", runtimeSessionId="12345678-1234-5678-9abc-123456789012", payload='{"query": "Plan a weekend in Seattle"}', )

在调用代理时,您可以添加以下可选标头以增强可观察性和跟踪功能:

标题 说明 示例值 技术解释

X-Amzn-Trace-Id

用于请求跟踪的跟踪 ID(X-Ray 格式)

root=1-5759e988-bd862e3fe1be46a994272793;parent=53995c3f42cd8ad8;Sampled=1

用于跨 AWS 服务的分布式跟踪。包含根 ID(请求来源)、父级 ID(以前的服务)和用于跟踪的采样决策。采样=1 表示 100% 采样。父级也是 X-Ray Trace 格式。如果未提供,OTEL 将自动生成跟踪 ID。

追踪父母

W3C 标准跟踪标头

00-4bf92f3577b34da6a3ce929d0e0e0e4736-00f067a0ba902b7-01

W3C 格式,包括版本、跟踪 ID、父级 ID 和标志。使用现代追踪系统时,跨服务追踪关联是必需的。

X-Amzn-Bedrock-AgentCore-Runtime-Session-Id

AgentCore 会话标识符

a1b2c3d4-5678-90ab-cdef-exampleaaaa

标识 AgentCore 系统内的用户会话。帮助进行基于会话的分析和故障排除。

mcp-session-ID

MCP 会话标识符

mcp-a1b2c3d4-5678-90ab-cdef-exampleaaaa

标识托管云平台中的会话。支持对整个 MCP 生态系统的操作进行跟踪。

跟踪状态

其他跟踪状态信息

congo=t61rc E,rojo=00f067aa0ba902b7 WkgMz

Vendor-specific 追踪信息。除了traceparent中的内容之外,还为跟踪系统传达了额外的上下文。

行李

分布式跟踪的上下文传播

userid=Alice,serverregion=us-east-1

Key-value 用于跨服务边界传播用户定义属性的配对,以进行上下文记录和分析。

使用自定义标题增强了 AgentCore 内置工具的可观察性

您可以使用其他 HTTP 标头调用 T Built-in ools,以提供增强的可观察性选项。在集成以下 T Build-in ools API 时,您可以添加以下可选标头,以增强可观察性和跟踪功能:

以下 API 支持自定义标头:

  • StartCodeInterpreterSession

  • InvokeCodeInterpreter

  • StopCodeInterpreterSession

  • StartBrowserSession

  • StopBrowserSession

标题 说明 示例值 技术解释

X-Amzn-Trace-Id

用于请求跟踪的跟踪 ID(X-Ray 格式)

root=1-5759e988-bd862e3fe1be46a994272793;parent=53995c3f42cd8ad8;Sampled=1

用于跨 AWS 服务的分布式跟踪。包含根 ID(请求来源)、父级 ID(以前的服务)和用于跟踪的采样决策。采样=1 表示 100% 采样。父级也是 X-Ray Trace 格式。如果未提供,OTEL 将自动生成跟踪 ID。

追踪父母

W3C 标准跟踪标头

00-4bf92f3577b34da6a3ce929d0e0e0e4736-00f067a0ba902b7-01

W3C 格式,包括版本、跟踪 ID、父级 ID 和标志。使用现代追踪系统时,跨服务追踪关联是必需的。

使用自定义标头增强 AgentCore 身份可观察性

您可以使用其他 HTTP 标头调用您的身份资源,以提供增强的可观察性选项。在集成以下身份 API 时,您可以添加以下可选标头,以增强可观察性和跟踪功能:

以下 API 支持自定义标头:

  • GetWorkloadAccessToken

  • GetWorkloadAccessTokenForJWT

  • GetWorkloadAccessTokenForUserId

  • GetResourceOauth2Token

  • GetResourceAPIKey

标题 说明 示例值 技术解释

X-Amzn-Trace-Id

用于请求跟踪的跟踪 ID(X-Ray 格式)

root=1-5759e988-bd862e3fe1be46a994272793;parent=53995c3f42cd8ad8;Sampled=1

用于跨 AWS 服务的分布式跟踪。包含根 ID(请求来源)、父级 ID(以前的服务)和用于跟踪的采样决策。采样=1 表示 100% 采样。父级也是 X-Ray Trace 格式。如果未提供,OTEL 将自动生成跟踪 ID。

可观测性最佳实践

在实现代理的可观察性时,请考虑以下最佳实践: AgentCore

  • 使用一致的会话 ID-如果可能,对相关请求重复使用相同的会话 ID,以维护交互之间的上下文。

  • 实现分布式跟踪-使用提供的标头启用跨应用程序组件的端到端跟踪。

  • 添加自定义属性-使用自定义属性增强您的跟踪和指标,为故障排除和分析提供更多背景信息。

  • 监控资源使用情况-注意内存使用率指标,以优化代理的性能。

  • 设置警报-配置 CloudWatch 警报,帮助您在潜在问题影响用户之前将其通知您。

使用其他可观测性平台

要将 AgentCore 运行时托管的代理与其他可观测性平台集成以捕获和查看遥测输出,请设置以下环境变量:

DISABLE_ADOT_OBSERVABILITY=true

将此变量设置为true取消设置 AgentCore 运行时的默认 ADOT 环境变量,确保未设置任何默认 ADOT 配置。